2016-12-13 3 views
0

私はcsjsクラスに渡したいxe:jsonRpcServiceを持っています。これはどのように可能ですか?xe:jsonRpcServiceをcsjsクラスに渡す

サービス:出力スクリプトで私のクラスに

<xe:jsonRpcService id="jsonRpcService1" serviceName="rpcServices"> 
    <xe:this.methods> 

     <xe:remoteMethod name="loadEntity" 
      script="PersonBean.loadEntity(id);"> 
      <xe:this.arguments> 
       <xe:remoteMethodArg name="id" type="string"></xe:remoteMethodArg> 
      </xe:this.arguments> 
     </xe:remoteMethod> 

    </xe:this.methods> 
</xe:jsonRpcService> 

コール:

formHelper = new FormHeler(rpcServices) ; 

csjsクラス:

function Formhelper(service) { 
    //... 
    this.loadEntity = function(id) { 
     //... 
     resultObj = service.loadEntity(id) ; 
     //... 
    } 
} 

クラスの作品にrpcServices.loadEntityを使用します。しかし、私はそれをパラメータとして渡したいので、クラスをさまざまなサービスで使用できます。

クラスコンストラクタのパラメータとしてrpcServicesが機能しません。サービスへの参照を渡してクラス内で利用できるようにする別の方法はありますか?

答えて

0

rpcServicesは、サーバー側のRESTサービスエンドポイントコレクション(this.methods)です。そのコレクションをCSJSに渡すことはできません。の結果だけをエンドポイントの1つであるに渡すことができます。

これは、SSJSスクリプトライブラリをCSJS関数に渡すようなものだと考えてください。

0

ありがとうございました。サービス名をクラスに渡すことで動作するようになりました。次に、私はevalを使用してrpcメソッドを呼び出します。

var serviceName = "rpcServices" ; 
formHelper = new FormHelper(serviceName) ; 

function FormHelper(serviceName) { 
    this.serviceName = serviceName ; 

    //... 
    this.loadEntity = function(id) { 
     var rpcResultObj = eval(this.serviceName + ".loadEntity(\"" + id + "\")") ; 
    } 
    //... 
} 

これで、さまざまなサービスでFormHelperメソッドを使用できます。

関連する問題