我正在尝试更新多个组件的视图。出于这个原因,我正在使用广播。如果我在没有$ apply()的情况下使用我的代码,则视图不会更新。如果我在多个视图上使用apply,我会收到'[$ rootScope:inprog] $ apply in progress'错误。
更改了代码
service.prototype.setNewTopic = function (topic) {
var self = this;
var promise = $http(
{
method: 'POST',
url: self.baseUrl + 'Admin/setNewTopic',
contentType: 'application/json',
data: {
topicName: topic
}
});
return promise;
}
答案 0 :(得分:1)
我改变了你的$ on方法的行为,它应该从$ broadcast中重新获取数据,我想在组件中适当地设置它。
// controller - 我假设控制器中的$ scope属性称为$ scope.newTopic
service.setNewTopic($scope.newTopic).then( function(data) {
$rootScope.$emit('testMonitor',$scope.newTopic)
})
//每个听力组件中的一个
$rootScope.$on('testMonitor', function(data) {
$scope.newTopic = data;
});
我将服务更改为仅执行http工作 //服务
service.prototype.setNewTopic = function (topic) {
return $http(
{
method: 'POST',
url: self.baseUrl + 'Admin/setNewTopic',
contentType: 'application/json',
data: {
topicName: topic
}
});
}