$resource доступ к промису angularJs ng-resource

Есть ли способ получить доступ к обещанию $resource, поскольку он превращает мои данные в объект «m», и я не могу получить доступ к этому m, поэтому я не могу получить свои атрибуты данных. Есть ли какое-либо решение для этого?

[m, $promise: d, $resolved: true]

m содержит все мои данные, но я не могу получить доступ ни к одному из своих атрибутов данных, чтобы работать с ними по-своему.

вот мой ресурс:

function getBank(id){
    return $resource('http://localhost:3000/bank/:id').query({id : id}).$promise.then(function(user){
        console.log(user);
    });
}

теперь console.log дает мне это: [m, $promise: d, $resolved: true], который искажает мои данные, есть ли доступ к этому «m»?


person hassine    schedule 11.04.2016    source источник
comment
непонятно, о чем вы спрашиваете.. добавьте больше объяснений + код..   -  person Pankaj Parkar    schedule 11.04.2016
comment
я обновил свой вопрос, надеюсь, теперь он более понятен   -  person hassine    schedule 11.04.2016


Ответы (2)


хорошо, я буду использовать $http, так как это не искажает данное обещание, которое устроит мой случай, спасибо всем, вот как я изменил свой сервис:

angular.module('myApp.profile').factory('Bank',Bank);

Bank.$inject = ['$resource','$http']; функция Банк($ресурс,$http){

var service =  {};
service.getBank = getBank;
return service;

/*function getBank(id){
    return $resource('http://localhost:3000/bank/:id').query({id : id}).$promise.then(function(user){
        console.log(user);
    });
}*/
function getBank(id, callback){
    var response ;
    return $http.get('http://localhost:3000/bank/'+id).then(function(bank){
        response = {success : true, bank : bank};
        callback(response);
    },function(error){
        response = {success : false, message : "Error retreiving Bank data"};
        callback(response);
    });

}

}

вызов диспетчера:

Bank.getBank($rootScope.loggedUser._id,function(response){
    if(response.success){
        $scope.bank = response.bank;
        console.log(response.bank.data[0]._id);
    }else{
        console.log(response.message);
    }
});

и это должно быть трюком :)

person hassine    schedule 11.04.2016

Вам не нужно использовать $promise.

Кажется, вы не понимаете, как использовать ngResource..

Сначала попробуйте написать factory:

(function(){
    'use strict';

angular.module('app')
    .factory('User', User);

User.$inject = ["$resource"];
function User($resource){
    return {
      getBank: $resource('http://localhost:3000/bank/:id', {id: '@id'}),
  }
};
})();

а затем в контроллере:

(function(){
    'use strict';

angular.module('app').controller('BankController', BankController);

BankController.$inject = ["$scope", "User"];
function BankController($scope, User){
    User.getBank.get({id:1}, function(item){
     console.log(item);
    },function(err){
      $scope.error=true;
    });
  }
}
})();
person g_arc    schedule 11.04.2016
comment
Кажется, вы не понимаете, как использовать ngResource (он использует его правильно). $promise требуется цепочка обещаний... то, как вы используете, это функции обратного вызова.. - person Pankaj Parkar; 11.04.2016
comment
я знаю, как использовать ngResource, моя проблема в том, как ngResource возвращает обещание - person hassine; 11.04.2016