将restangular getList结果分配给$ scope

时间:2013-11-21 06:06:22

标签: angularjs restangular

所以看起来在示例中你可以这样做:

App.controller('ProjectListCtrl', ['$scope', 'Restangular', function($scope, Restangular) {
  $scope.projects = Restangular.all('project/').getList();
}]);

但这对我不起作用。当我在项目中重复项目并查看范围时,我看到:

{ 
projects:  { 
  then: null
  catch: null
  finally: null
  call: null
  get: null
  restangularCollection: true
  push: null
 } 
}

哪个看起来像未解决的承诺对象?

这种方法很好但更详细:

lgtApp.controller('ProjectListCtrl', ['$scope', 'Restangular', function($scope, Restangular) {
  Restangular.all('project/').getList().then(function(projects){            
    $scope.projects = projects;                                             
  });                                                                       
}]);                                                                        

我错过了什么吗?这是在文档中:

$scope.owners = house.getList('owners')

无所谓,但是当我在Ripple chrome插件中测试一个phonegap应用时会发生这种情况。

3 个答案:

答案 0 :(得分:12)

$scope.projects = Restangular.all('project/').getList().$object;

答案 1 :(得分:9)

作为对其他评论的补充,即使承诺解包被禁用,我在Restangular中实现了一种新的方式,让你轻松地为你打开包装(类似于$ resource做什么而不删除Promises)。查看https://github.com/mgonto/restangular#using-values-directly-in-templates了解更多信息:)

答案 2 :(得分:7)

从角度1.2开始,承诺的自动展开被禁用和弃用。所以,虽然

$scope.projects = Restangular.all('project/').getList();

允许您在以前的版本中直接访问视图中的projects(可能已编写的Restangular文档),它将不再自动运行。您可以通过$parseProvider.unwrapPromises() API重新启用该功能,但不推荐使用它,因此您最好的选择可能是手动解决控制器中的承诺,就像在更详细的示例中一样。

有关详细信息,请参阅签到commit message