我的角度js应用程序中存在很大问题。 我有一个工厂模块,它有一个getAll()函数,它从服务器获取json数据。 我有控制器模块,我尝试将工厂的getAll()函数值分配给scope.eventSports。
我的问题是,首先运行变量assign,并且它不等待getAll()函数返回数据。 变量assign首先运行未完成的...然后我得到getAll()函数的结果。
如何实现变量assign等待getAll()函数?
工厂:
var gameDataFactory = angular.module('gameDataFactory', []);
gameDataFactory.factory('gameDataFactory', ['gameService', function(gameService) {
var sportEvents = {
getAll : function(){
gameService.getGroupedEvents()
.success(function(data) {
// Get the json data from the server.
// This gives back the data, but later, this run at second time...
console.log(data.sportEvents);
return data.sportEvents;
})
.error(function(error) {
return null;
});
}
};
return {
sportEvents: sportEvents
};
}]);
控制器:
gameControllers.controller('SportEventListCtrl', ['$scope', 'gameService', 'gameDataFactory', '$sce',
function($scope, gameService, gameDataFactory, $sce) {
$scope.sportEvents = {};
$scope.status = true;
// I should somehow assign this scope variable with callback
$scope.sportEvents = gameDataFactory.sportEvents.getAll();
// This run first and this is undefinied.
console.log($scope.sportEvents);
答案 0 :(得分:1)
更改此行
gameService.getGroupedEvents()
到
return gameService.getGroupedEvents()
答案 1 :(得分:0)
有多种方法可以实现此功能,例如返回延迟对象。另一种更简单的方法是将$ scope传递给getAll函数,并将任何数据绑定到传递的$ scope。