将restangular getList结果分配给$ scope

Aar*_*lin 9 angularjs restangular

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

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

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

{ 
projects:  { 
  then: null
  catch: null
  finally: null
  call: null
  get: null
  restangularCollection: true
  push: null
 } 
}
Run Code Online (Sandbox Code Playgroud)

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

这工作正常,但更详细:

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

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

$scope.owners = house.getList('owners')
Run Code Online (Sandbox Code Playgroud)

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

jla*_*jla 12

$scope.projects = Restangular.all('project/').getList().$object;
Run Code Online (Sandbox Code Playgroud)


mgo*_*nto 9

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


kon*_*ong 7

从角度1.2开始,承诺的自动展开被禁用和弃用.所以,同时

$scope.projects = Restangular.all('project/').getList();
Run Code Online (Sandbox Code Playgroud)

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

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