簡體   English   中英

在解析promise之后,視圖不會在angularjs中更新

[英]view not updating in angularjs after a promise is resolved

我有一個工廠從服務器獲取數據並傳遞給控制器​​,許多控制器從工廠調用get方法,但只有控制器的范圍變量首先調用工廠而不是全部...這里是我的工廠代碼

(function () {
angular.module('myapp').factory('agendaFactory', ['$http', '$q', function ($http, $q) {
    var user = "";
    var defer = $q.defer();
    var agenda = {
        getAll: function (tempData, addType) {
            $http.post('/api/' + addType + '/getAll', tempData).success(function (data, status) {
                console.log(addType, data);
                //console.log(status);
                defer.resolve(data);

            }).error(function (err, status) {
                console.log(err, status);
                defer.reject(status);
            });
            return defer.promise;
        }
    };
    return agenda;
}]);
}());

這是調用它們的兩個控制器..

changeData = function (data) {
            console.log("called function in liffe");
            $scope.lifetimeData = data;
        }
        agendaFactory.getAll(tempData, addType).then(function (data) {
                console.log('lifeData', data);
                changeData(data);
                return;
            }, function (err) {
                console.log('today err', err);
            })

和第二個控制器

changeData = function (data) {
                console.log("called function in year");
                $scope.yearData = data;
            }
            agendaFactory.getAll(tempData, addType).then(function (data) {
                console.log('yeardata', data);
                changeData(data);
                return;
            }, function (err) {
                console.log('today err', err);
            });

但是只有第一個控制器的數據正在視圖中更新

刪除promise包裝器,因為$http已經返回一個promise。 因為它們已被棄用,所以也要擺脫成功/錯誤處理程序。

(function () {
angular.module('myapp').factory('agendaFactory', ['$http', '$q', function ($http, $q) {
    var user = "";
    var agenda = {
        getAll: function (tempData, addType) {
            return $http.post('/api/' + addType + '/getAll', tempData);
        }
    };
    return agenda;
}]);
}());

然后,您可以處理控制器中的成功/錯誤條件

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM