【发布时间】:2015-02-28 23:02:46
【问题描述】:
我正在尝试使用轮询服务不断更新控制器。我的服务正在运行,并且可以验证它正在轮询并正确获取新数据。我无法工作的是更新使用该服务的控制器。
这是我所拥有的:
cadApp.controller('statsController', function ($scope, DashboardStats) {
$scope.data = DashboardStats.data.response;
console.log(JSON.stringify(DashboardStats.data.response));
});
cadApp.run(function (DashboardStats) { });
cadApp.factory('DashboardStats', function ($http, $timeout) {
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
var data = { response: {}, calls: 0 };
var url = "Ajax/CADAjax.aspx";
var params = { "Command": "GetDashboardStats" };
var poller = function () {
$http.post(url, Object.toparams(params))
.then(function (responseData) {
data.response = responseData.data[0];
// This is working
console.log(JSON.stringify(responseData.data[0]));
data.calls++;
$timeout(poller, 10000);
});
};
poller();
return {
data: data
};
});
UI 永远不会使用轮询服务返回的当前对象进行更新。我的猜测是服务中的 return 语句不正确。它只返回在服务顶部声明的大部分为空的对象。
如何让服务在 http 响应返回时自动更新控制器?
【问题讨论】:
标签: angularjs angularjs-service angularjs-controller