Почему не сработала директива Angular JS после изменения значений в Service?

Рейтинг: 0Ответов: 1Опубликовано: 12.04.2015

Сейчас написана такая директива:

.directive('myDirective', ['CounterNotificationService', function(CounterNotificationService) {
            return {
                restrict: 'A',
                transclude: true,
                scope: {},
                controller: function($scope) {
                    $scope.CounterNotificationService = CounterNotificationService.getCounter();
                },
                templateUrl: 'myDirective.html'
            };
        }])

Она имеет зависимость от сервиса CounterNotificationService и возвращает в переменную $scope.CounterNotificationService результат от функции getCounter() сервиса.

HTML выглядит так:

<script type="text/ng-template" id="myDirective.html">
    {{CounterNotificationService}}
    </script>
    <div my-directive></div>

Сейчас директива отрабатывает своё, но если в контроллере вызвать изменение значений в сервисе:

CounterNotificationService.setCounterValue('messages', 6);

То директива не получает новые значения в строке:

$scope.CounterNotificationService = CounterNotificationService.getCounter();

Соответственно в шаблоне HTML так же не меняются значения.

Ответы

▲ 2Принят

Метод CounterNotificationService.getCounter() возвращает примитив, то есть число, строчку, булево выражение? Если да, то попробуйте возвращать объект с полем, в котором будет хранится ваше значение и в своей директиве будете обращаться примерно как $scope.CounterNotificationService.value. Объект разумеется должен быть проинициализирован в сервисе.