这是我的控制者:
mainApp.controller('recordController', [ '$scope', 'record', 'recordSlides', function($scope, record, recordSlides) {
$scope.pageClass = 'page page-record';
record.success(function(data){
$scope.tracks = data;
});
$scope.myInterval = 3000;
recordSlides.success(function(data){
$scope.slides = data;
});
/*$scope.slides=[
{
"image": "http://lorempixel.com/400/200/"
},
{
"image": "http://lorempixel.com/400/200/food"
}
]*/}])
这些是我注入上述控制器的工厂:
mainApp.factory('record',['$http', function($http){ // for delivering records data
return $http.get('./data/record.json')
.success(function(data) {
return data;
})
.error(function(err) {
return err;
});
}]);
mainApp.factory('recordSlides',['$http', function($http){ // for delivering slides on record page
return $http.get('./data/recordSlides.json')
.success(function(data) {
return data;
})
.error(function(err) {
return err;
});
}]);
来自工厂的JSON数据"记录"正在被拉动并正确显示但来自" recordSlides"工厂没有显示。当我直接将json数据传递给"幻灯片" (代码注释掉了)但是当我注入控制器并通过工厂传递JSON数据时,它无法工作。
这是recordSlides.json:
[{
"image": "http://lorempixel.com/400/200/"
},
{
"image": "http://lorempixel.com/400/200/food"
}]
感谢您的帮助。
由于
答案 0 :(得分:2)
在服务中:
var deferred = new $q.defer();
$http({...})
.success(function (resp) {
deferred.resolve(resp);
})
.error(function(err){
deferred.reject(err);
}
return deferred.promise;
并在控制器中:
record.then(function(data){
$scope.tracks = data;
});
recordSlides.then(function(data){
$scope.slides = data;
});
不要忘记在服务中包含$ q依赖