9

因此,在示例中您可以执行以下操作:

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 应用程序时会发生这种情况。

4

3 回答 3

12
$scope.projects = Restangular.all('project/').getList().$object;
于 2014-02-03T17:05:14.433 回答
9

作为对其他评论的补充,即使禁用了承诺展开,我在 Restangular 中实现了一种让您轻松展开承诺的新方法(类似于 $resource 在不删除承诺的情况下所做的事情)。检查https://github.com/mgonto/restangular#using-values-directly-in-templates了解更多信息:)

于 2013-12-10T06:04:37.957 回答
7

从 Angular 1.2 开始,promise 的自动解包被禁用和弃用。所以,虽然

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

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

有关更多详细信息,请参阅签入提交消息

于 2013-11-21T06:47:46.460 回答