2013-11-21 7 views
9

So sieht es aus wie in den Beispielen, dies zu tun:

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

Aber das ist für mich nicht funktioniert. Als ich ng-Repeat-Projekt in Projekten und Blick auf den Umfang, sehe ich:

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

die wie ein un gelöst Versprechen Objekt richtig aussieht?

fein Das funktioniert aber ist ausführlicher:

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

Habe ich etwas verpasst? Dies ist in der Dokumentation:

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

sollte keine Rolle spielen, aber das passiert, wenn ich eine phonegap App im Ripple Chrom-Plugin zu testen.

Antwort

7

Ab 1.2 war das automatische Auspacken von Versprechungen deaktiviert und veraltet. So, während

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

Sie projects Ihrer Ansicht nach direkt in früheren Versionen zugreifen erlaubt hätte (für die die Restangular docs wo wahrscheinlich geschrieben), die nicht mehr automatisch arbeiten. Sie können die Funktion über die API $parseProvider.unwrapPromises() erneut aktivieren. Dies ist jedoch veraltet. Daher ist es wahrscheinlich am besten, das Versprechen in Ihrem Controller manuell zu lösen, wie in Ihrem ausführlicheren Beispiel.

Weitere Informationen finden Sie im Check-in commit message.

9

Als Ergänzung zu den anderen Kommentar, obwohl Versprechen Auspacken deaktiviert wurde, habe ich in Restangular eine neue Möglichkeit, Versprechen einfach auszupacken für Sie (ähnlich, was $ Ressource macht was, ohne Versprechen zu entfernen). Prüfen https://github.com/mgonto/restangular#using-values-directly-in-templates für weitere Informationen :)

+1

Diese – yar1

+0

die akzeptierte Antwort sollte nicht viel Glück mit diesem mit zu sein Scheinen. Es gibt ein leeres Array zurück - http://stackoverflow.com/questions/27844177/restangular-data-getting-into-scope-for-a-list – Horse

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

In der aktuellen Version (Restangular 1.5.1, Angular 1.3.15) dies Ansatz scheint zu funktionieren, da das eigentliche Array innerhalb der Eigenschaft, $ object' liegt. – methai