我有一个工厂从服务器获取数据并传递给控制器,许多控制器正在从工厂调用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);
});
但只有第一个控制器的数据正在视图中更新
答案 0 :(得分:0)
删除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;
}]);
}());
然后,您可以处理控制器中的成功/错误条件