angular 广播在第二次调用时不更新
angular broadcast not updating on second call
我有一个调用服务的控制器。在该服务中,我执行了一个 $rootScope.$broadcast ,它在页面加载时完美运行。但是,当我再次调用该服务时,$rootScope.$broadcast 似乎没有被调用。
控制器:
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
控制器。
在页面加载时,从 this.inititate
调用的 $broadcast
被成功调用并且 {{myValue}}
显示为 1。
然而,点击我的带有 ng-click="Next()"
的按钮时,尽管再次调用该服务,{{myValue}}
仍然显示为 1,而不是 1 + 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);
};
);
我有一个调用服务的控制器。在该服务中,我执行了一个 $rootScope.$broadcast ,它在页面加载时完美运行。但是,当我再次调用该服务时,$rootScope.$broadcast 似乎没有被调用。
控制器:
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
控制器。
在页面加载时,从 this.inititate
调用的 $broadcast
被成功调用并且 {{myValue}}
显示为 1。
然而,点击我的带有 ng-click="Next()"
的按钮时,尽管再次调用该服务,{{myValue}}
仍然显示为 1,而不是 1 + 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);
};
);