Возможность доступа к `$ scope` и` this` с использованием контроллера в качестве синтаксиса. Почему?

0

Я строю угловой контроллер с использованием controller as синтаксиса:

<body ng-controller="ctrl as myCtrl">
  <p>accessed via scope resolution: {{ foo }} </p>
  <p>accessed via controller resolution: {{ myCtrl.foo }}</p>
</body>

В контроллере у меня есть следующее:

myApp.controller('ctrl', function($scope) {
  this.foo = 'Controller\ foo';
  $scope.foo = '$scope\ foo';
});

Приведенный выше код работает и печатает bot- controller foo и $scope foo.

  • Зачем?
  • Это всего лишь случай "неуказанного поведения"?
  • Есть ли когда-нибудь время, когда вы хотели бы использовать оба в реальном мире?
  • 1
    Из документации: Экземпляр контроллера можно опубликовать в свойстве области, указав ng-controller = "as propertyName". Итак, propertyName.foo ссылается на $ scope.foo
  • 0
    Кроме того, бывают случаи, когда вы захотите ввести $ scope, если у вас есть прослушиватели событий ( $scope.$on() ) или вам необходимо явно наблюдать ( $scope.$watch() ) возвращаемое значение переменной или функции, даже при использовании синтаксиса «контроллер как». Я нашел эту статью очень полезной в объяснении почему.
Показать ещё 1 комментарий
Теги:
angularjs-scope
angularjs-controller

1 ответ

1
Лучший ответ

Очень хорошее подробное объяснение в

http://codetunnel.io/angularjs-controller-as-or-scope/

Надеюсь это поможет !

Ещё вопросы

Сообщество Overcoder
Наверх
Меню