这将是专家们非常明显的那些愚蠢问题之一。AngularJS在范围变化时不更新模板变量
我有一个websocket推送数据到一个服务,我试图存储数据,并通过我的控制器将它推送到模板。
的数据进来,并更新变量,但UI只能更新是我对数据进行操作:
services.factory('Summary', ['$q','$rootScope','$http', '$location', function ($q, $rootScope,$http, $location) {
var Service = {};
Service.dataObj = {};
Service.dataObj.d = {"gello":"goodbye"};
....
function listener(data) {
messageObj = data;
Service.dataObj.d = data;
console.log("Received data from websocket: ", messageObj);
}
})]);
controllers.controller('UserCtrl', ['$scope', 'Summary',
function ($scope, Summary) {
$scope.click = function(){
alert(JSON.stringify($scope.summaryinfo));
}
$scope.summaryinfo = [Summary.dataObj];
$scope.summarygridOptions = {
data: 'summaryinfo'
};
console.log("hello");
}]);
数据被泵入而据我知道,因为它被存储在Service.dataObj.d中,如果我将我的HTML模板指向Service.dataObj,那么该对象正在更新并且未被替换,因此指针应该保留并且该对象将被监视。
但它不会改变,除非我运行click()方法,在这种情况下,即使我只是触发警报,UI也会受到影响。
我错过了什么?
尝试使用范围$ apply以应用更改。 – Daiwei
昨晚花了4个小时试图弄清楚到底发生了什么......今天早上醒来看到了你的问题,并在3分钟内修好了!感谢bugg_tb! – rastko