当我将控制器false
更改为true
或将true
更改为false
时
$scope.$broadcast('test', false);
在控制器视图中,没有任何更改:
<div ng-show = "test.data">
我不知道为什么。你有主意了。
下面的示例类似:https://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/
(function () {
'use strict';
angular
.module('app')
.controller('aController', aController);
function aController($scope) {
initialize();
function initialize() {
set();
}
function set() {
return Service.test()
.then(function (data) {
switch (data.status) {
case 'SUCCESS':
if ( data.value === false ){
$scope.$broadcast('test', false);
} else {
$scope.$broadcast('test', true);
}
break;
default:
$scope.$broadcast('test', true);
break;
}
})
.catch(function (error) {
});
}
$scope.$on('test', function ($event, data) {
});
}
})();
发布于 2018-08-22 03:36:13
如果你有
<div ng-show="test.data">
...
</div>
在你的视图中,你应该在你的控制器中做的是:
function aController($scope) {
initialize();
function initialize() {
$scope.test = { data: true };
set();
}
function set() {
Service.test()
.then(function (data) {
if(data.status === 'SUCCESS') {
$scope.test.data = data.value;
} else {
$scope.test.data = true;
}
})
.catch(function (error) { });
}
}
甚至不需要使用$scope.$broadcast()
。
https://stackoverflow.com/questions/51953375
复制相似问题