从解决返回列表

时间:2014-11-19 19:19:48

标签: angularjs promise

我正在尝试从解析中返回数据列表,然后在我的控制器中访问该列表。 Resolve假设在加载控制器之前触发,但似乎相反。

dbdata.getlist 是使用$ http.get的api调用,它返回一个列表。

$routeProvider
    .when('/main', {
        templateUrl: 'views/main.html',
        resolve : {
            listdata: ['$q','dbdata',function ($q,dbdata) {
                dbdata.getlist(function(data){
                     return data;
                });
            }]
        },
        controller: 'MainCtrl'
    })

....
}

angular.module('amebaTvApp')
  .controller('MainCtrl', ['$scope',
    function ($scope,listdata) {
      $scope.list = listdata;
...
  }]);

建议编辑:

当我尝试下面的代码时,无法读取属性'然后'未定义

 listdata: ['$q','dbdata',function ($q,dbdata) {
                var deferred = $q.defer();
                dbdata.getFeatures(function(data){
                     deferred.resolve(data);
                });
                return deferred.promise;
            }]

...

 listdata.then( function(data) { 
            $scope.list = data;  
      });
当控制器加载时,lisdata似乎是未定义的,这就是我收到错误的原因:无法读取属性'然后'未定义

如果我像这样访问listdata:$ route.current.locals.listdata那么它可以工作。

1 个答案:

答案 0 :(得分:0)

通过$ route.current.locals.listdata访问listdata似乎已经成功了。这是否是正确的方式我不太确定。任何反馈都会很棒。