如何动态分配角度工厂方法?

时间:2016-04-01 14:02:26

标签: javascript jquery angularjs

实际上我的要求是动态分配角度工厂方法。

请看一下这段代码:

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]不是函数

我想我很好地解释了我的要求。如果您需要更多详细信息,请与我们联系。任何人都可以帮我实现这个目标吗?

1 个答案:

答案 0 :(得分:2)

使用方括号表示法时,方括号中的位需要为字符串

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

应该是

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

这里可以看到一个模型示例:https://jsfiddle.net/jyonvcj4/1/