我想在Json中填充一些使用angular-promises计算的值,这些值应该在某些事件之后更新。 我试图调用工厂产生值,例如下面的东西,并试图调用负责计算值的函数GetWeeklyVal和GetDailyVal:
string-array
在我的控制器里我有:
this.salesList =
{"sales":[
{ "id":"A1", "dailyValue": GetDailyVal('A1'), "weeklyValue": GetWeeklyVal('A1')},
{ "id":"A2", "dailyValue": GetDailyVal('A2'), "weeklyValue": GetWeeklyVal('A2')}
]}
但它没有用。值保持为零,这是应用程序中的默认值。 为什么价值没有更新,什么是更好的解决方案?
更新
这是我调用计算函数的代码部分:(我跳过部分来获取基于此处传递的id的值)
$scope.sales= salesServices.salesList.sales;
这是工厂
function GetDailyVal(id){
var dValue = 0;
salesService.getSales();
dValue = salesService.totalAmount;
return dValue;
}
答案 0 :(得分:1)
我认为您的代码中存在一些错误。
我在这里给出一些示例代码。我想这会对你有帮助。
这是我的一个应用程序中的示例代码。检查一下。
service.factory('Settings', ['$http','$q', function($http,$q) {
return {
AcademicYearDetails : function(Details) {
return $http.post('/api/academic-year-setting', Details)
.then(function(response) {
if (typeof response.data === 'object') {
return response.data;
} else {
return $q.reject(response.data);
}
}, function(response) {
return $q.reject(response.data);
});
},
newUser : function(details) {
return $http.post('/api/new-user', details);
}
} }]);
答案 1 :(得分:0)
它不起作用的原因是:
dailyValue: GetDailyVal('A1')
在这里,GetDailyVal对api进行异步ajax调用。要处理异步请求,您必须在GetDailyVal函数中按如下方式返回一个promise:
function GetDailyVal() {
salesService.getSales().then(function(data) { //promise
dValue = salesService.totalAmount;
return dValue;
})
}
需要为weeklyValue做同样的事情。