У меня есть три элемента для этой программы. Во-первых, на службе, у меня есть:Часы Angularjs не запускаются
$scope.loaded = MySvc.loaded;
$scope.loaded = false;
Затем в контроллер, который импортирует эту услугу, у меня есть ряд вводных вещей. Мне нужно, чтобы вызвать события в директивах после того, как контроллер делается с asycnhronous работы, так и в контроллере, когда этот триггер готов, я
MySvc.loaded = true;
И тогда в директиве, которая также импортирует услуги, у меня есть,
$scope.loaded = MySvc.loaded;
$scope.$watch('loaded', function (newValue, oldValue) {
директива срабатывает, когда loaded
инициализируется «ложь», но когда я изменить значение «истина», ничего не происходит. Часы просто не срабатывают. Почему нет? Как это исправить?
Прежде всего, странно, что служба имеет доступ к '$ scope'. Можете ли вы опубликовать полный исходный код для этой ситуации? Вероятно, ваши директивы имеют свой собственный масштаб, и поэтому свойство 'loaded' в контроллере не совпадает с областью действия директив. Попробуйте использовать '$ scope. $ Broadcast' вместо флагов bool для уведомления ваших директив, все готово. – fracz
Вы пытались использовать '$ scope. $ Apply' после изменения значения на' true'? –
@JamesBrierley Да. Это вызвало ошибку, потому что дайджест уже действовал. –