【发布时间】:2013-08-04 05:14:01
【问题描述】:
我正在寻找关于 polling data using AngularJS 的解决方案,我在 stackoverflow 上找到了。
在此解决方案中(如下所示),它使用 javascript 对象来返回响应 (data.response),如果我尝试将 data 对象替换为 简单的 javascript 数组,它 不起作用,我想确切地知道为什么我需要使用 dot notation 以及为什么单个数组不起作用? (这将是很好的链接或示例解释)
app.factory('Poller', function($http, $timeout) {
var data = { response: {}, calls: 0 };
var poller = function() {
$http.get('data.json').then(function(r) {
data.response = r.data;
data.calls++;
$timeout(poller, 1000);
});
};
poller();
return {
data: data
};
});
试图总结我的目标(我想真正理解的):var data = { response: {}, calls: 0 }; 在哪里可以是var data = {}; 然后response.data 将直接设置为数据data = r.data 和return {data: data};,我为什么要这样做需要依赖点符号吗?
【问题讨论】:
-
我删除了这个点,它仍然有效plnkr.co/edit/lIltfOWL4YObm5oRB13W?p=preview
-
但是您仍然可以通过
data.response访问响应槽,我的意思是:而不是var data = { response: {}, calls: 0 };是var data = []; -
我尝试替换您的示例,但现在失败了 plnkr.co/edit/kCV95VJlCpSq6etVNJVf?p=preview
-
因为每次调用poller时,data都指向一个新对象
data = r.data; -
哦,我想我明白了。由于我使用的是相同的对象实例 (
data.prop = value),每次唯一会改变的是值,如果我尝试使用[]、{}或简单的值,它会让我失去视图中的引用. (绑定:视图指向一个不再存在的对象)。我做对了吗?
标签: javascript angularjs syntax polling ajax-polling