Angularjs 如何在使用resolve调用控制器之前读取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) } } }) 我使用了这样的

我试图在控制器调用之前读取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>',
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 {}
      }

    }
}