AngularJS在页面加载时运行一系列函数

时间:2015-08-29 16:58:50

标签: javascript angularjs parse-platform ionic-framework

我需要在加载一个为用户准备页面的状态时运行一系列函数。

这些函数基本上是对Parse.com的三次调用(不能将它们组合成一个查询,因为它们在不同的类中)

三个函数(parse.com查询)是:

  1. 获取用户收藏
  2. 获取页面数据
  3. 获取用户保存的数据
  4. 虽然我分别有这三个函数,但我想要一个更强大的方法来做这个,而不是像这样一个接一个地运行函数:

    getFavourites();
    getPageData();
    getUserData();
    

    我的三个功能是这样的:

    var getFavourites = function() {
        var query = {
            user: {
                "__type": "Pointer",
                "className": "_User",
                "objectId": Parse.User.current().id
            }
        };
    
        ParseFactory.provider('Favourites', query).getAll().success(function(data) {
            var favouritesArray = [];
            for (var i = 0; i < data.results.length; i++) {
                favouritesArray = data.results[i].favourites;
            };
    
            $localStorage.favourites = favouritesArray;
    
            favouriteExerciseIds();
    
            // elasticFavouriteSearch(favouriteIds);
    
        }).error(function(response) {
            errorFactory.checkError(response);
        });
    };
    
    
    var getSavedExercises = function() {
        var query = {
            'userId': Parse.User.current().id
        };
        ParseFactory.provider('UserExercises', query).getAll().success(function(data) {
            var savedExercises = [];
            for (var i = 0; i < data.results.length; i++) {
                var exercise = {
                    exerciseName: data.results[i].exerciseName,
                    exerciseDescription: data.results[i].exerciseDescription,
                    images: data.results[i].images,
                    difficulty: data.results[i].difficulty,
                    id: data.results[i].objectId
                }
                savedExercises.push(exercise);
            };
            $localStorage.savedExercises = savedExercises;
    
        }).error(function(response) {
            errorFactory.checkError(response);
        });
    };
    
    
    
    var getPageData = function() {
        ParseFactory.provider('Programme/').get($stateParams.loadProgramme).success(function(data) {
                $localStorage.programme = data;
                $scope.programme = $localStorage.programme;
                addedExercises();
            }).error(function(response) {
                errorFactory.checkError(response);
            });
    }
    

1 个答案:

答案 0 :(得分:2)

让你的所有方法都返回一个承诺 然后您可以使用$q.all方法在所有承诺解决后显示页面。

检查以下代码,

var init = function(){

    $q.all([ getFavourites(), getSavedExercises(), getPageData() ]).then(function(responses){
        //Show The page, check responses for promise success 

    });

};

var getFavourites = function() {

    var deferred = $q.defer();

    var query = {
        user: {
            "__type": "Pointer",
            "className": "_User",
            "objectId": Parse.User.current().id
        }
    };

    ParseFactory.provider('Favourites', query).getAll().success(function(data) {
        var favouritesArray = [];
        for (var i = 0; i < data.results.length; i++) {
            favouritesArray = data.results[i].favourites;
        };

        $localStorage.favourites = favouritesArray;

        favouriteExerciseIds();

        // elasticFavouriteSearch(favouriteIds);
        deferred.resolve('');

    }).error(function(response) {
        errorFactory.checkError(response);
        deferred.reject(response);
    });

    return deferred.promise;
};


var getSavedExercises = function() {

    var deferred = $q.defer();

    var query = {
        'userId': Parse.User.current().id
    };
    ParseFactory.provider('UserExercises', query).getAll().success(function(data) {
        var savedExercises = [];
        for (var i = 0; i < data.results.length; i++) {
            var exercise = {
                exerciseName: data.results[i].exerciseName,
                exerciseDescription: data.results[i].exerciseDescription,
                images: data.results[i].images,
                difficulty: data.results[i].difficulty,
                id: data.results[i].objectId
            }
            savedExercises.push(exercise);
        };
        $localStorage.savedExercises = savedExercises;

        deferred.resolve('');


    }).error(function(response) {
        errorFactory.checkError(response);

        deferred.reject(response);

    });

    return deferred.promise;

};



var getPageData = function() {

    var deferred = $q.defer();


    ParseFactory.provider('Programme/').get($stateParams.loadProgramme).success(function(data) {
        $localStorage.programme = data;
        $scope.programme = $localStorage.programme;
        addedExercises();

        deferred.resolve('');

    }).error(function(response) {
        errorFactory.checkError(response);
        deferred.reject(response);

    });

    return deferred.promise;

}