angularJs厂。那么()不是一个函数

问题描述 投票:0回答:1

我使用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
    })  

而现在,它是工作很好,和。那么()正确返回我的对象​​!

angularjs factory
1个回答
1
投票

如果你想要把它变成一个异步方法,您需要返回的承诺。注入$q服务,做:

return $q.resolve(equipe);

如果以后更改这是一个HTTP调用,您不必手动创建的承诺。该$http服务会为你做它,所以你可以只是做:

return $http.get(...);

但是,如果您不需要这些是一个异步方法,你不需要承诺。你可能只是保持你的服务,因为它是做:

$scope.equipe = equipesFactoryLocalStorage.getEquipeMomentanee();
// Do something else
© www.soinside.com 2019 - 2024. All rights reserved.