更新多个视图

时间:2017-04-08 11:31:07

标签: javascript angularjs

我正在尝试更新多个组件的视图。出于这个原因,我正在使用广播。如果我在没有$ 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;
}

1 个答案:

答案 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
        }
    });

}