angularJs Factory .then() 不是函数
angularJs Factory .then() is not a function
我正在使用 angularJs v1.7
我需要从工厂加载我的对象,这工作得很好:
$scope.equipe = equipesFactoryLocalStorage.getEquipeMomentanee();
现在,我需要像这样添加一个 .then(),因为我需要在加载对象之后做一些事情:
equipesFactoryLocalStorage.getEquipeMomentanee().then(function(response){
$scope.equipe = response;
})
AngularJs 在控制台内提供此错误:
TypeError: "equipesFactoryLocalStorage.getEquipeMomentanee(...).then is not a function"
我为此苦苦挣扎了几个小时,请帮助我。
这是我的工厂 :
monApp.factory('equipesFactoryLocalStorage',function(){
var factory = {};
/* Charger une equipe momentanee */
factory.getEquipeMomentanee = function(equipe){
if(JSON.parse(localStorage.getItem("equipe"))!=null){
var equipe = JSON.parse(localStorage.getItem("equipe"));
}
else{
var equipe = {};
equipe.attaquants = [];
equipe.ailiers_gauche = [];
equipe.attaquants_soutien = [];
equipe.ailiers_droits = [];
equipe.milieu_gauche = [];
equipe.milieu_soutien = [];
equipe.milieu_droit = [];
equipe.defense_gauche = [];
equipe.defense_soutien = [];
equipe.defense_droit = [];
equipe.liberos = [];
equipe.goal = [];
equipe.img = "img/new.png";
equipe.date_creation = new Date();
}
return equipe ;
}
return factory
})
请帮助我,我不明白为什么 .then() 不工作,而它在没有 .then() 的情况下工作
我试过 angularjs 1.5 ,但有同样的错误 .
我已经看过几个 post 了,没有人在工作,我已经试过了:
equipesFactoryLocalStorage.getEquipeMomentanee().$promise.then(function(response){
$scope.equipe = response;
})
也不行。它不是双重 post,它真的不起作用。
编辑:谢谢 Frank Modica,现在已解决:
我已经这样改变了我的工厂(请注意$q):
monApp.factory('equipesFactoryLocalStorage',function($q){
var factory = {};
/* Charger une equipe momentanee */
factory.getEquipeMomentanee = function(equipe){
if(JSON.parse(localStorage.getItem("equipe"))!=null){
var equipe = JSON.parse(localStorage.getItem("equipe"));
}
else{
var equipe = {};
equipe.attaquants = [];
equipe.ailiers_gauche = [];
equipe.attaquants_soutien = [];
equipe.ailiers_droits = [];
equipe.milieu_gauche = [];
equipe.milieu_soutien = [];
equipe.milieu_droit = [];
equipe.defense_gauche = [];
equipe.defense_soutien = [];
equipe.defense_droit = [];
equipe.liberos = [];
equipe.goal = [];
equipe.img = "img/new.png";
equipe.date_creation = new Date();
}
return $q.resolve(equipe);
}
return factory
})
现在,它运行良好,.then() returns 我的对象正确!
如果你想把它变成一个异步方法,你需要return一个承诺。注入 $q
服务并执行:
return $q.resolve(equipe);
如果您稍后将其更改为 HTTP 调用,则无需手动创建承诺。 $http
服务会为你做这件事,所以你可以这样做:
return $http.get(...);
但是,如果您不需要这是一个异步方法,则不需要 promise。您可以保持服务不变,然后:
$scope.equipe = equipesFactoryLocalStorage.getEquipeMomentanee();
// Do something else
我正在使用 angularJs v1.7
我需要从工厂加载我的对象,这工作得很好:
$scope.equipe = equipesFactoryLocalStorage.getEquipeMomentanee();
现在,我需要像这样添加一个 .then(),因为我需要在加载对象之后做一些事情:
equipesFactoryLocalStorage.getEquipeMomentanee().then(function(response){
$scope.equipe = response;
})
AngularJs 在控制台内提供此错误:
TypeError: "equipesFactoryLocalStorage.getEquipeMomentanee(...).then is not a function"
我为此苦苦挣扎了几个小时,请帮助我。
这是我的工厂 :
monApp.factory('equipesFactoryLocalStorage',function(){
var factory = {};
/* Charger une equipe momentanee */
factory.getEquipeMomentanee = function(equipe){
if(JSON.parse(localStorage.getItem("equipe"))!=null){
var equipe = JSON.parse(localStorage.getItem("equipe"));
}
else{
var equipe = {};
equipe.attaquants = [];
equipe.ailiers_gauche = [];
equipe.attaquants_soutien = [];
equipe.ailiers_droits = [];
equipe.milieu_gauche = [];
equipe.milieu_soutien = [];
equipe.milieu_droit = [];
equipe.defense_gauche = [];
equipe.defense_soutien = [];
equipe.defense_droit = [];
equipe.liberos = [];
equipe.goal = [];
equipe.img = "img/new.png";
equipe.date_creation = new Date();
}
return equipe ;
}
return factory
})
请帮助我,我不明白为什么 .then() 不工作,而它在没有 .then() 的情况下工作 我试过 angularjs 1.5 ,但有同样的错误 .
我已经看过几个 post 了,没有人在工作,我已经试过了:
equipesFactoryLocalStorage.getEquipeMomentanee().$promise.then(function(response){
$scope.equipe = response;
})
也不行。它不是双重 post,它真的不起作用。
编辑:谢谢 Frank Modica,现在已解决:
我已经这样改变了我的工厂(请注意$q):
monApp.factory('equipesFactoryLocalStorage',function($q){
var factory = {};
/* Charger une equipe momentanee */
factory.getEquipeMomentanee = function(equipe){
if(JSON.parse(localStorage.getItem("equipe"))!=null){
var equipe = JSON.parse(localStorage.getItem("equipe"));
}
else{
var equipe = {};
equipe.attaquants = [];
equipe.ailiers_gauche = [];
equipe.attaquants_soutien = [];
equipe.ailiers_droits = [];
equipe.milieu_gauche = [];
equipe.milieu_soutien = [];
equipe.milieu_droit = [];
equipe.defense_gauche = [];
equipe.defense_soutien = [];
equipe.defense_droit = [];
equipe.liberos = [];
equipe.goal = [];
equipe.img = "img/new.png";
equipe.date_creation = new Date();
}
return $q.resolve(equipe);
}
return factory
})
现在,它运行良好,.then() returns 我的对象正确!
如果你想把它变成一个异步方法,你需要return一个承诺。注入 $q
服务并执行:
return $q.resolve(equipe);
如果您稍后将其更改为 HTTP 调用,则无需手动创建承诺。 $http
服务会为你做这件事,所以你可以这样做:
return $http.get(...);
但是,如果您不需要这是一个异步方法,则不需要 promise。您可以保持服务不变,然后:
$scope.equipe = equipesFactoryLocalStorage.getEquipeMomentanee();
// Do something else