我有这个简单的工厂,它获取数据文件并将其保存到 service.data:
angular.module("tiki").factory("editTiki", ["$http", function($http){
var service = {}
service.data = {}
service.getTikis = function(){
$http.get("data/tikis.json").success(function(tikis){
console.log(tikis)
service.data = tikis
})
}
return service
}])
然后,在 Controller 中我将它分配给 $scope。当然,这首先是空的,但是当 $http 解析时,它应该更新我的工厂,然后用返回的数据更新 service.data 对象。
angular.module('tiki').controller("tiki.controller.settings.edit", ["$scope", "editTiki", function($scope, editTiki){
//should return the tikis
$scope.preview = editTiki.data
editTiki.getTikis()
$scope.showEditTikiObject = function(){
console.log($scope.preview)
}
}])
但是,我有这个函数来测试数据的内容,它返回一个空对象。这是为什么?
最佳答案
在将 service.data = tikis
分配给 $scope.preview
之后,您正在重新分配它。
您可能应该根据 promise 做一些事情。
angular.module("tiki").factory("editTiki", ["$http", function($http){
var service = {};
service.data = {};
service.getTikis = function(){
return $http.get("data/tikis.json").success(function(tikis){
console.log(tikis)
service.data = tikis;
return service.data;
})
};
return service;
}]);
angular.module('tiki').controller("tiki.controller.settings.edit", ["$scope", "editTiki", function($scope, editTiki){
editTiki.getTikis()
.then(function () {
$scope.preview = editTiki.data;
});
$scope.showEditTikiObject = function(){
console.log($scope.preview);
};
}])
关于angularjs - 使用带有 $http promise 的工厂返回空对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29108586/