实际上我的要求是动态分配角度工厂方法。
请看一下这段代码:
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 Code
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]不是函数
我想我很好地解释了我的要求。如果您需要更多详细信息,请与我们联系。任何人都可以帮我实现这个目标吗?
答案 0 :(得分:2)
使用方括号表示法时,方括号中的位需要为字符串
var controlContent = angular.element(layoutControlsFactory[ThirdPartyAutoComplete]());
应该是
var controlContent = angular.element(layoutControlsFactory["ThirdPartyAutoComplete"]());
这里可以看到一个模型示例:https://jsfiddle.net/jyonvcj4/1/