如何使用 AJAX 更改服务中的变量? AngularJS
How to change a variable in a service with AJAX? AngularJS
我正在尝试使用 AJAX 引入一些数据,然后在将结果发送到控制器之前对其进行修改。我让这一切都在控制器中工作,但我被告知最好在服务中完成。
app.factory('GameweekJsonFactory', ['$http',function($http){
var promise;
var service = {
async: function() {
if ( !promise ) {
promise = $http.get('jsons/gameweeks.json').then(function(response){
return response.data
});
}
return promise;
}
}
return service;
}]);
然后在另一个工厂中,我想根据 AJAX 调用的响应更改变量的值。 (例如,如果按日期是游戏周 6,我希望 gwk 等于 6)。
app.factory('GameweekFactory',['GameweekJsonFactory',function(GameweekJsonFactory) {
var gwk;
var obj = {
foo: function(){
GameweekJsonFactory.async().then(function(d){
//Code here to find out the current gameweek.
gwk = 6;
return gwk;
});
}
};
return gwk;
}]);
controller: function(GameweekFactory){
console.log('Controller Log '+GameweekFactory)
},
然后如何修改工厂范围内的原始 gwk 变量?我无法解决这个问题,我已经谷歌搜索了很多年!
您没有正确定义工厂。 AngularJS 工厂是 return 一个值的函数,在本例中它是一个具有名为 foo
.
方法的对象
Promise 是可链接的。成功回调的值 return 被传递到下一个成功回调。因此,您可以操纵该值(添加 gwk)和 return 该值。
app.factory('GameweekFactory',[
'GameweekJsonFactory',
function(GameweekJsonFactory) {
return {
foo: function(){
return GameweekJsonFactory.async().then(function(d){
//Code here to find out the current gameweek.
d.gwk = 6;
return d;
});
}
};
}]);
controller: function(GameweekFactory){
GameweekFactory.foo().then(function(d){
console.log('Controller Log '+d.gwk)
});
}
我正在尝试使用 AJAX 引入一些数据,然后在将结果发送到控制器之前对其进行修改。我让这一切都在控制器中工作,但我被告知最好在服务中完成。
app.factory('GameweekJsonFactory', ['$http',function($http){
var promise;
var service = {
async: function() {
if ( !promise ) {
promise = $http.get('jsons/gameweeks.json').then(function(response){
return response.data
});
}
return promise;
}
}
return service;
}]);
然后在另一个工厂中,我想根据 AJAX 调用的响应更改变量的值。 (例如,如果按日期是游戏周 6,我希望 gwk 等于 6)。
app.factory('GameweekFactory',['GameweekJsonFactory',function(GameweekJsonFactory) {
var gwk;
var obj = {
foo: function(){
GameweekJsonFactory.async().then(function(d){
//Code here to find out the current gameweek.
gwk = 6;
return gwk;
});
}
};
return gwk;
}]);
controller: function(GameweekFactory){
console.log('Controller Log '+GameweekFactory)
},
然后如何修改工厂范围内的原始 gwk 变量?我无法解决这个问题,我已经谷歌搜索了很多年!
您没有正确定义工厂。 AngularJS 工厂是 return 一个值的函数,在本例中它是一个具有名为 foo
.
Promise 是可链接的。成功回调的值 return 被传递到下一个成功回调。因此,您可以操纵该值(添加 gwk)和 return 该值。
app.factory('GameweekFactory',[
'GameweekJsonFactory',
function(GameweekJsonFactory) {
return {
foo: function(){
return GameweekJsonFactory.async().then(function(d){
//Code here to find out the current gameweek.
d.gwk = 6;
return d;
});
}
};
}]);
controller: function(GameweekFactory){
GameweekFactory.foo().then(function(d){
console.log('Controller Log '+d.gwk)
});
}