угловая трансляция не обновляется при втором вызове

0

У меня есть контроллер, который вызывает услугу. В рамках службы я выполняю $ rootScope. $ Broadcast, который отлично работает при загрузке страницы. Однако, когда я снова вызываю услугу, передача $ rootScope. $, Похоже, не называется.

контроллер:

app.controller('MyController', function($scope, myService) {

    myService.inititate($scope);

    $scope.Next = function () {
        myService.next($scope);
    };    
});

Обслуживание:

app.service("loginService", function ($http, $rootScope) {

    var counter = 0;

    var checkuser = function (scope) {
        //some code.....
        $rootScope.$broadcast('rcvrCast', counter + 1);
    }

    this.inititate = function (scope) {
        //some code.....
        checkuser(scope);
    };

    this.next = function (scope) {
        //some code.....
        checkuser(scope);
    };
);

Директива:

app.directive('myDirective', function() {
    return {
        restrict: 'A',
        replace: true,
        scope: {},
        link: function(scope, element, attrs) {
            scope.$on("rcvrCast", function(event, val) {
                scope.myValue = val;
            });
        },
        template:
            '<section>' +
                '<p>{{myValue}}</p>' +                        
            '</section>'
    }
});

HTML:

<body ng-controller="ParentController">

    <section my-directive></section>

    <div ui-view></div>
</body>

На странице index.html загружается контроллер MyController.

При загрузке страницы $broadcast вызов $broadcast this.inititate успешно вызывается, а {{myValue}} отображается как 1.

Однако при нажатии на мою кнопку, которая имеет ng-click="Next()", хотя служба снова {{myValue}}, {{myValue}} по-прежнему отображается как 1, а не 1 + 1 = 2.

Есть предположения?

  • 0
    Вы можете создать поршень?
Теги:
angularjs-scope
angular-services
angular-broadcast

1 ответ

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

Вы не считаете счетчик. Попробуйте использовать ++counter вместо counter+1

app.service("loginService", function ($http, $rootScope) {

    var counter = 0;

    var checkuser = function (scope) {
        //some code.....
        $rootScope.$broadcast('rcvrCast', ++counter);
    }

    this.inititate = function (scope) {
        //some code.....
        checkuser(scope);
    };

    this.next = function (scope) {
        //some code.....
        checkuser(scope);
    };
);
  • 0
    дерьмо, забыл это! благодарю вас!

Ещё вопросы

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