AngularJS — как вы связываете контроллер по пути после компиляции html?

Можно ли динамически связать контроллер после того, как он был скомпилирован из шаблона?

//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)?
    });
}

person DangerLine    schedule 16.02.2016    source источник


Ответы (1)


Вы можете попробовать добавить атрибут в свой скомпилированный шаблон (было бы хорошо знать, какой именно у вас шаблон).

Попробуйте следующий код:

element.setAttribute(name, value);

Пример:

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

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

Так что вам просто нужен идентификатор вашего шаблона, например. id или класс, затем установите свой атрибут.

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

Если это не поможет вам, возможно, вам помогут следующие темы:

AngularJS: динамически назначать контроллер из ng-repeat

Имя динамического NG-контроллера

Динамическое назначение ng-controller во время выполнения

person NapkinHD    schedule 16.02.2016