AngularJS - 在编译html后如何通过路径关联控制器?

时间:2016-02-16 11:51:39

标签: javascript angularjs angularjs-directive angular-template angular-controller

从模板编译后,是否可以动态关联控制器?

//Controller /path/ctrl/MainCtrl.js
angular.module('app')
    .controller('MainCtrl', function () {

    });

//Directive  /path/dir/myDir.js
function link(scope, element, attrs) {
    $templateRequest('path/oneTpl.tpl').then(function (html) {
        $compile(element.html(html).contents())(scope);
        //How can I do to dynamically inject MainCtrl into the oneTpl.tpl template using the path (/path/ctrl/MainCtrl.js)?
    });
}

1 个答案:

答案 0 :(得分:1)

您可以尝试向已编译的模板添加属性(很高兴知道,模板的确切含义)。

请尝试以下代码:

element.setAttribute(name, value);

示例:

<button>Hello World</button>
var b = document.querySelector("button"); 

b.setAttribute("disabled", "disabled");

所以你只需要一个模板的标识符,例如id或class an然后设置你的属性。

JQuery:$('#yourTemplate').setAttribute('ng-controller','yourController' );

如果这对您没有帮助,也许以下主题可以帮助您:

AngularJS: dynamically assign controller from ng-repeat

Dynamic NG-Controller Name

Dynamically assign ng-controller on runtime