Angularjs 如何在使用resolve调用控制器之前读取json文件?
我试图在控制器调用之前读取json文件并获取数据。但我无法显示输出为什么 我制造了一个这样的工厂Angularjs 如何在使用resolve调用控制器之前读取json文件?,angularjs,angularjs-directive,angularjs-scope,angular-ui-router,Angularjs,Angularjs Directive,Angularjs Scope,Angular Ui Router,我试图在控制器调用之前读取json文件并获取数据。但我无法显示输出为什么 我制造了一个这样的工厂 .factory('abc',function($http){ return{ loadData:function(successCallback,errorCallbak){ return $http.get('data.json').success(successCallback).error(errorCallbak) } } }) 我使用了这样的
.factory('abc',function($http){
return{
loadData:function(successCallback,errorCallbak){
return $http.get('data.json').success(successCallback).error(errorCallbak)
}
}
})
我使用了这样的解析函数
resolve: {
user: function (abc) {
return abc.loadData
}
}
但是它不以HTML显示输出为什么
template: '<b>Welcome {{home.user.name}}!</b>',
template:'Welcome{{{home.user.name}!',
预期输出为欢迎Naveen您必须提供成功和失败回调
正如我在评论中所说,Resolve函数应该总是返回一个承诺。因此,您应该从abc
service
loadData`函数返回promiseobject,而不是使用callbacks
因此,要将服务loadData
函数转换为promise,您需要将.success
和.error
函数更改为。然后
函数返回promise对象($http.get
方法返回promise),如。然后(successCallback,errorCallbak)
工厂
.factory('abc', function($http) {
return {
loadData: function(successCallback, errorCallbak) {
//returned promise object using `.then` as $http.get function return promise
return $http.get('data.json').then(successCallback, errorCallbak)
}
}
})
解决
resolve: {
user: function(abc) {
return abc.loadData(success, error);
function success(res) {
console.log(res)
return res.data;
}
function error(res) {
return []; // or whatever default data, maybe {}
}
}
}
调用abc.loadData
时,我看不出您正在传递successCallback
和errorCallback
,另外resolve函数返回promise对象。但是这里您使用了回调,这可能是它背后的另一个原因。好的,我将尝试更新您无法获取您能否更新我的plunkerI这里没有看到plunkr链接您的plunkr,您错过了数据属性,因此您没有返回res.data
,而是返回res
resolve: {
user: function(abc) {
return abc.loadData(success, error);
function success(res) {
console.log(res)
return res.data;
}
function error(res) {
return []; // or whatever default data, maybe {}
}
}
}