0
我有一个工厂正在获取数据并将其返回给控制器。它在第一个控制器上工作,但在第二个控制器上没有任何返回。我的印象是,我可以把它传递给所有的控制器。一会儿,我想也许它只能被实例化一次,所以我用相同的步骤创建了另一个工厂。还是一样的结果。它在第二控制器
//Factory
angular.module('myApp')
.factory('classData', function($http){
return {
getClassData : function() {
var studentData = [ ];
$http({
method: 'GET',
url: 'theUrl'
}).success(function(data){
for(var i = 0; i < data.length; i++)
studentData.push(data[i]);
}).error(function(){
alert("error", error);
});
return studentData;
}
};
});
//Controller 1:
angular.module('myApp')
.controller('studentListCtrl', function($scope, classData, statService) { //this controller is just view logic
$scope.sortType = 'attendanceYtd';
$scope.searchStudent = '';
$scope.students = classData.getClassData(); //returns all \t \t data
\t
//Controller 2:
angular.module('attendanceApp')
.controller('studentHistoryCtrl', function($scope, $stateParams, classData) {
//get all data
$scope.students = classData.getClassData();
console.log($scope.students); //returning an empty array
我很惊讶它的工作在所有的,因为它不应该。显然你不明白什么是异步代码。成功和错误回调可以在事件分钟后被调用,并且您立即返回结果。它不应该工作。 – sielakos