我有一个工厂,我有一个函数getExpenseList,它执行一个查询费用表的ajax调用并给出结果。Angular factory ajax call on every route change
现在我有两条路线,第一条是通过上述功能推动费用的费用列表,第二条路线是增加。当我进行路由更改并返回到列表页面时,再次进行ajax调用。理想情况下,我应该能够将费用对象存储在第一个Ajax调用中,然后引用同一对象,直到有人手动刷新浏览器。
请帮助我。这是我的工厂代码。理想情况下,如果数据存在,我想引用this.expenses。
admin.factory('expenseFact', ['$http', function($http) {
var expense = {};
this.expenses = "";
expense.getExpenseList = function() {
this.expenses = $http({
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
method: "GET",
url: base_url + "rest/expenses"
});
return this.expenses;
};
return expense;
}]);
这里是我的控制器代码
admin.controller('expenseLandCtrl', function ($scope,$rootScope,expenseFact) {
$scope.pageTitle = $rootScope.pageTitle;
expenseFact.getExpenseList().then(function (data) {
$scope.expenses = data.data;
});
});
admin.controller('expenseAddCtrl', function ($scope,$rootScope,expenseFact) {
$scope.pageTitle = $rootScope.pageTitle;
});
我建议你使用模块模式,并在需要时只调用getExpenseList。在你的工厂总是返回费用,这就是为什么它总是会被调用,因为你使它成为json对象的一部分费用 – 2014-09-20 08:02:55