视图在AngularJS中没有被更新。

14 浏览
0 Comments

视图在AngularJS中没有被更新。

当在事件回调中更新模型时,更新模型属性对视图没有影响,有什么解决方法吗?

这是我的服务:

angular.service('Channel', function() {        
    var channel = null; 
    return {        
        init: function(channelId, clientId) {
            var that = this;        
            channel = new goog.appengine.Channel(channelId);
            var socket = channel.open();
            socket.onmessage = function(msg) {
                var args = eval(msg.data);              
                that.publish(args[0], args[1]);
            };
        }       
    };
});

publish()函数是在控制器中动态添加的。

控制器:

App.Controllers.ParticipantsController = function($xhr, $channel) {
    var self = this;
    self.participants = [];     
    // 这里将publish函数添加到服务中
    mediator.installTo($channel); 
    // 同时添加了subscribe和publish        
    $channel.subscribe('+p', function(name) { 
        self.add(name);     
    });                 
    self.add = function(name) {     
        self.participants.push({ name: name });     
    }
};
App.Controllers.ParticipantsController.$inject = ['$xhr', 'Channel'];

视图:

      
    

所以问题是,点击按钮可以正确更新视图,但是当我从Channel接收到消息时,什么都没有发生,甚至add()函数也没有被调用。

0