2016-04-01 16 views
0

実際に私の要件は、角度ファクトリメソッドを動的に割り当てることです。角度ファクトリメソッドを動的に割り当てる方法は?

表情にこのコードを持ってください:上記のコードで

angular.forEach(scope.mapperData.collections.controltype.rowset, function (value, index) { 
    if (value.controltypeid == scope.controlId){ 
     scope.controlData = value.controltypename; 
     controlContent = angular.element(layoutControlsFactory[scope.controlData]()); 
     $compile(controlContent)(scope); 
     element.append(controlContent); 
    } 
}); 

var controlContent = angular.element(layoutControlsFactory[scope.controlData]()); 

scope.controlDataを持っています。値は動的になります。私は、私が試したが、それはエラーを示しているよう

var controlContent = angular.element(layoutControlsFactory[ThirdPartyAutoComplete]()); 

それとも

var controlContent = angular.element(layoutControlsFactory.ThirdPartyAutoComplete()); 

layoutControlsFactoryコード

bosAppModule.factory("layoutControlsFactory",function($compile){ 
    var layoutControlsFactory={}; 

    layoutControlsFactory.ThirdPartyAutoComplete=function(controlId){ 
     console.log("## Create ThirdPartyAutoComplete"); 
     var template='<input kendo-auto-complete>'; 
     return template; 
    }; 


    return layoutControlsFactory; 
}); 

を割り当てる必要があります。

typeError: layoutControlsFactory[scope.controlData] is not a function

私は私の要件をよく説明したと思います。詳細が必要な場合はお知らせください。誰も私がこれを達成するのを助けることができますか?

+1

'layoutControlsFactory'は' scopeControlsFactory'のように見え、 'scope.controlData'の値は何ですか?彼らが適切なデータを持っていれば、あなたの構文はうまくいくはずです(https://jsfiddle.net/jyonvcj4/) – Jamiec

+0

@Jamiec - これでlayoutControlsFactoryコードが追加されました。見てください。 – bagya

答えて

2

角括弧表記法を使用する場合は、角括弧内のビットが

var controlContent = angular.element(layoutControlsFactory[ThirdPartyAutoComplete]()); 

var controlContent = angular.element(layoutControlsFactory["ThirdPartyAutoComplete"]()); 

モックアップの例でなければならない文字列である必要があるが、ここで見ることができる:何https://jsfiddle.net/jyonvcj4/1/

+0

ありがとうございました.. – bagya

関連する問題