У меня есть контроллер без $scope
angular.module('todoApp', [])
.controller('TodoListController', function() {
var todoList = this;
todoList.title = "Default title";
setTimeout(function() {
todoList.title = "Another title will appear after 5 seconds";
}, 5000);
// ...some magic here
});
И взгляд:
<h1>Current title: {{TodoListController.title}}</h1>
Этот код не будет корректно работает, becaufe функции в setTimeout
не будет работать $digest()
, который может обновить мой TodoListController.title
.
Я знаю, что могу использовать $scope
и использовать $scope.$digest()
. Но - можно ли без него запустить $digest()
? У меня всегда есть доступ к объекту angular
. Может быть, через этот объект?
не является ответом, так как другие ответы верны, но только потому, что вы используете ControllerAs, это не значит, что вы «без' $ scope' »... ControllerAs * abstracts *' $ scope', делая контроллер псевдонимом объект на '$ scope', уменьшая (но не полностью устраняя) ваши возможные потребности напрямую взаимодействовать с' $ scope'. Вы не должны смотреть на инъекцию '$ scope' * при необходимости * как плохой дизайн. – Claies
Вопрос, вызванный ошибкой '$ scope is bad', является ложным. Преследование $ scope - самая смешная вещь, которая может случиться с Angular community. Btw, $ scope. $ Apply можно заменить на $ rootScope. $ Apply и $ rootScope. $ Digest. И кстати, есть веские причины, почему это не должно быть сделано, и нет веских причин, почему это должно быть. – estus