baskerville42
@baskerville42
Учусь работать (Junior)

Когда использовать $scope а когда ControllerAs?

Я новичок в AngularJS и сейчас дописывая очередной контроллер поймал себя на мысли что давно не использовал $scope постоянно прибегая к конструкции
angular.module('app.module')
    .controller('SomeController', function() {
        var vm = this;
    });

Может я не правильно понимаю тему области видимости или не правильно понимаю назначение конструкции выше. Когда же всё таки использовать $scope, а когда ng-controller="SomeController as vm"
  • Вопрос задан
  • 2667 просмотров
Решения вопроса 2
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
Controller As желательно всегда, а уж инджектить или нет в контроллер $scope зависит от того, нужно ли вам:
- подписываться на события
- ватчеры в контроллерах

Случай когда вы именно хотите из контроллера задать что-то что должно наследоваться во всех скоупах я нарочно опускаю ибо так делать не стоит. Если уж хотите, это можно сделать в run модуля через $rootScope. Но не из контроллера, они по возможности должны быть изолированными и не должны зависить от иерархии.

Если вам удается обходиться без этого и все это берут на себя директивы и сервисы - славно, значит верной дорогой идете... скорее всего.

Единственое что... почему вы пишите SomeController as vm... По идее вы должны писать там алиас контроллера что бы было понятно у кого методы дергаются. Понятно в смысле не ангуляру а вам.
Ответ написан
xeLL
@xeLL
Fullstack web developer
На https://docs.angularjs.org/api/ng/directive/ngCont... пишут, что:
  1. Используя "Controller as" становится очевидным к какому контроллеру вы обращаетесь в шаблоне, когда несколько контроллеров.
  2. Более лёгкий доступ к свойствам и методам.
  3. Поскольку всегда существует . , вам не придется беспокоиться о багах в наследование.

И вот еще обсуждение stackoverflow.com/questions/24330266/when-to-use-s... самому интересно и сейчас буду читать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы