Как внедрить контроллер как зависимость при использовании нотации "Контроллер как"?

У меня есть контроллер, который зависит от другого контроллера (для информации о настройках). Я пытаюсь использовать шаблон Controller As, но получаю ошибку внедрения.

Вот мои контроллеры:

angular.module('app2', [])

.controller('ctrl1', [function () {
    var controller = this;
    controller.value = 6;
}])

.controller('ctrl2', ['ctrl1', function (ctrl1) {
    var controller = this;
    controller.testValue = 5;
    controller.runTest = function () { return ctrl1.Value * 2; };
}])

А вот как это используется

<body ng-controller="ctrl2 as ctrl">
    {{ ctrl.runTest() }}
</body>

Я видел эту статью здесь, но она не выглядела так же, и я не мог понять, как заставить это решение работать: AngularJS Как внедрить зависимости при использовании синтаксиса controller-as

1 ответ

Решение

Я действительно предлагаю вам использовать service общаться между контроллерами и хранить общие данные.
Один из многих простых примеров можно найти, например, здесь.

Но, если вы настаиваете, то вам нужно ввести $controller,

.controller('ctrl1', function() {
    var controller = this;
    controller.value = 6;
})

.controller('ctrl2', function($controller) {
    var controller = this;
    controller.testValue = 5;

    controller.runTest = function() {
      return $controller('ctrl1').value * 2; // <-note: '.Value' does not exist in ctrl1
    };
}); 
Другие вопросы по тегам