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

发布时间: 2017/4/16 4:49:41
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

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

请看一看这段代码︰

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

我觉得我好的解释,我的要求。请让我知道是否你需要更多的细节。任何一个人可以帮我实现这一目标吗?

解决方法 1:

当使用方括号,方括号中的位需要一个字符串

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

应该是

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

可以在这里看到样机的一个示例︰ https://jsfiddle.net/jyonvcj4/1/

官方微信
官方QQ群
31647020