2016-12-13 126 views
0

我有一個xe:jsonRpcService,我想傳遞給一個csjs類。這怎麼可能?將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,您只能通過的一個端點的結果。

認爲它就像試圖將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方法與不同的服務。