使用angularjs从本地主机获取json文件$ http.get方法
问题描述:
我从本地主机获取JSON文件,我成功获取数据,当我登录控制台时可以看到它,但是当我在控制器中注入Factory时它返回一个空对象,这意味着变量erroMessages没有得到JSON对象,因为成功函数没有在工厂返回之前执行,请大家帮忙。
assetInModule.factory('helperFactory',function($http,$sce){
'use strict';
var title = "default";
var errorMessages = {content:null};
return {
title : function(){ return title;},
setTitle : function(newNitle){title = newNitle;},
getErrorMessages : function(){
$http.get('http://127.0.0.1/assetinspa/public/js/helpers/error_messages.json')
.success(function(data){
errorMessages = data;
});
return errorMessages;
}
};
});
答
尝试
assetInModule.factory('helperFactory',function($http,$sce){
'use strict';
var title = "default";
var errorMessages = {content:null};
return {
title : function(){ return title;},
setTitle : function(newNitle){title = newNitle;},
getErrorMessages : function(){
return $http.get('http://127.0.0.1/assetinspa/public/js/helpers/error_messages.json');
}
};
});
angular.controller('YourCtrl', function ($scope, helperFactory) {
$scope.errorMessages = {};
helperFactory
.getErrorMessages()
.success(function(data) {
$scope.errorMessages = data;
});
});
回报之前$ http.success发射结束
答
"use strict";
assetInModule.factory("helperFactory", ["$http","$q",
function ($http, $q) {
var getErrorMessages = function() {
var deferred = $q.defer();
$http.get('http://127.0.0.1/assetinspa/public/js/helpers/error_messages.json')
.success(function(data) {
deferred.resolve(data);
});
return deferred.promise;
};
return {
title: function() { return title; },
setTitle: function (newNitle) { title = newNitle; },
GetErrorMessages: getErrorMessages
}
}
]);
在使用的时候
helperFactory.GetErrorMessages().then(function(result){
//get the data
})
返回d {$$状态:对象}当我控制台日志,我可以得到直接的对象,因为它返回此对象,它的第一个我看到它 – Teebo
谢谢我忽略了最后的代码段,它工作,它第一次得到stackOverflow帮助 – Teebo