我试图在控制器调用之前读取json文件并获取数据。但是我无法显示输出为什么?
我这样做了一家工厂
.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>',
预期输出欢迎Naveen
答案 0 :(得分:1)
正如我在评论中所说,解决功能应该总是返回一个承诺。因此,而不是使用callbacks you should return promise
对象from the
abc service
loadData`函数。
因此,要将您的服务loadData
功能转换为承诺,您需要更改.success
&amp; .error
函数到.then
函数,它返回一个promise对象($http.get
方法返回promise),如.then(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 {}
}
}
}
答案 1 :(得分:0)
您必须提供成功和失败回调
http://plnkr.co/edit/HBDMMb7CWAN9BXTDz6fb?p=preview
resolve: {
user: function (abc) {
return abc.loadData(success, error);
function success (res) {
return res.data;
}
function error (res) {
return []; // or whatever default data, maybe {}
}
}
}