AngularJS资源未得到解决

Dir*_*kZz 2 javascript resources promise angularjs

我是AngularJS的新手,所以请保持温柔.

我想使用AngularJS的$ resource属性从我的后端检索数据,但似乎在实际调用完成之前该属性已被加载.

目前我有以下代码:

控制器:

MyApp.controller('IndexCtrl', function IndexCtrl($scope, socket, carsRes) {
    console.log(carsRes.cars.get());
    $scope.cars = carsRes.cars.get();
});
Run Code Online (Sandbox Code Playgroud)

.factory('carsRes', function($resource) {
        var result = {};
        result.cars = $resource('/cars/:id', {}, {
            'get': {method: 'GET'},
            'save': {method: 'POST'},
            'query': {method: 'GET', isArray: true},
            'remove': {method: 'DELETE'},
            'delete': {method: 'DELETE'}
        });

        return result;
 });
Run Code Online (Sandbox Code Playgroud)

但是在我想在$ scope.cars中存储carsRes.cars.get()时,调用尚未完成,并且console.log告诉我$ resolved仍然是false.

我该如何等待电话解决?我读过关于$ q的一些内容,但对我来说并不是很清楚.

jsz*_*ody 6

发生这种情况是因为它resource.get()是异步的.它立即返回一个空引用,然后在ajax调用完成后填充实际数据.

处理结果的最佳方法是使用回调函数:

carsRes.cars.get(function(response){ 
    // We now have a completed ajax call, with the response
    $scope.cars = response;
});
Run Code Online (Sandbox Code Playgroud)

请参阅$resource文档中的更多示例.

  • 实际上 - 与$ http不同,ngResource对象方法不返回promise:_重要的是要意识到调用$ resource对象方法会立即返回一个空引用(取决于isArray的对象或数组).从服务器返回数据后,将使用实际数据填充现有引用._ (2认同)