Подтвердить что ты не робот

Контроллер angularjs в директиве, использующей controllerAs не может работать?

Я пытаюсь поместить некоторые данные в область, которую моя директива создает. Вот мой jsFiddle.

следующий код хорошо работает

.directive('directive1', function () {
    return: {
        scope: true,
        controller: function ($scope) {
            $scope.name = 'world';
        }
    }
})

<div directive1>
    <p>{{ name }}</p>
</div>

но этот код не работает

.directive('directive2', function () {
    return: {
        scope: true,
        controller: function () {
            this.name = 'world';
        },
        controllerAs: 'testCtrl'
    }
})

<div directive2>
    <p>{{ testCtrl.name }}</p>
</div>

Что-то не так в моем коде? или я ничего не понял о controllerAs?

4b9b3361

Ответ 1

ControllerAs поддержка директив была добавлена ​​в 1.2.0, поэтому вам придется использовать самую последнюю версию вместо 1.0.2 из связанного скрипта. Этот способ работает так, как вам хотелось.

Ответ 2

Пожалуйста, не путайте с директивным контроллером и обычным контроллером! Так что да, в дирекции может быть контроллер, который что-то контролирует. Но это не эквивалентно нормальному контроллеру!

На самом деле проблема заключается в том, чтобы поставить директивную логику в директивный контроллер, но на самом деле управляющий контроллер используется для перекрестной директивной связи. Экземпляр контроллера одной директивы может быть введен в другую директиву, которая находится на одном и том же элементе (или дочерних элементах).

Выражение "controller as" для обычных контроллеров. Поэтому просто сделайте свою услугу и поместите свою логику в функцию ссылок директив.