我使用angularJs V1.7
我需要从一个工厂加载我的对象,这是工作得非常好:
$scope.equipe = equipesFactoryLocalStorage.getEquipeMomentanee();
现在,我需要添加一个。那么()这样的,因为我需要做一些事情之后对象被加载:
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
})
请帮帮我,我不明白为什么。那么()不工作,这是工作,而不用。那么()我试着angularjs 1.5,并且具有相同的错误。
我看了一下这几款的帖子,没有人工作,我已经试过这样:
equipesFactoryLocalStorage.getEquipeMomentanee().$promise.then(function(response){
$scope.equipe = response;
})
它不工作的。它不是一个双岗,它真的行不通。
编辑:谢谢你弗兰克·莫迪卡,它现在已经得到解决:
我已经改变了我厂这样的(请注意$ 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
})
而现在,它是工作很好,和。那么()正确返回我的对象!
如果你想要把它变成一个异步方法,您需要返回的承诺。注入$q
服务,做:
return $q.resolve(equipe);
如果以后更改这是一个HTTP调用,您不必手动创建的承诺。该$http
服务会为你做它,所以你可以只是做:
return $http.get(...);
但是,如果您不需要这些是一个异步方法,你不需要承诺。你可能只是保持你的服务,因为它是做:
$scope.equipe = equipesFactoryLocalStorage.getEquipeMomentanee();
// Do something else