Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了AngularJS轮询服务不会持续更新控制器大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用轮询服务连续更新控制器.我有服务工作,可以验证它正在轮询和正确获取新数据.我无法工作的是更新使用该服务的控制器.

这是我有的:

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响应返回时,如何让服务自动更新控制器?

解决方法

你必须返回一些数据 – 并且不要将超时逻辑放在服务中 – 应该包含在控制器代码中.您可以重构以处理控制器中的响应以及服务中包含的数据调用

cadApp.controller('statsController',$timeout,DashboardStats) {
    pollData();

    function pollData() {
        DashboardStats.poll().then(function(data) {
            $scope.data = data;
            $timeout(pollData,10000);
        });
    }
});

cadApp.factory('DashboardStats',$timeout) {
    $http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";

    var url = "Ajax/CADAjax.aspx";
    var params = { "Command": "GetDashboardStats" };
    var data = { response: { },calls: 0 };

    var poller = function () {
        return $http.post(url,Object.toparams(params)).then(function (responseData) {
            data.calls++;
            data.response = responseData.data[0];

            return data;
        });
    };

    return {
        poll: poller
    }
});

大佬总结

以上是大佬教程为你收集整理的AngularJS轮询服务不会持续更新控制器全部内容,希望文章能够帮你解决AngularJS轮询服务不会持续更新控制器所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。