为什么我不能在Factory上进行查询调用但是我可以在Controller上?角

时间:2016-02-10 16:20:07

标签: angularjs node.js angular-resource

angular.module('app').factory('mvsomeManager', 
 function ($q, $http, mvSomething){
    return{
        getsomedata:function(){
            var data = mvSomething.query();
            if(response){
              dfd.resolve(response);
            }else{
                dfd.reject({reason:"error"});
            }
            return dfd.promise;//No data is returned
    };
 });
//usage
angular.module('app').controller('mvsomelCtrl', function ($scope, mvsomeManager,mvSomething){
    //same thing in factory but now it returns list without problem
    $scope.querydata = mvSomething.query();//This works
    $scope.querydata = mvsomeManager.getsomedata();//This does not works!
 });

你能不在工厂打电话询问吗?我可以使用$ save,$ update在工厂上调用Delete,put等。但只是不能使用GET(查询)来返回数据列表。仅适用于控制器。

1 个答案:

答案 0 :(得分:1)

您有一个同步的操作(getsomedata)而另一个(.then())是延迟的。因此,您需要使用//this call is synchonous $scope.querydata = mvSomething.query();//This works //this call is async mvsomeManager .getsomedata() .then(onGetDataSuccess, onGetDataError); function onGetDataError(error){ alert('error, please check console logs'); console.error(error); } function onGetDataSuccess(data){ $scope.querydata = data; } 来访问数据。

{{1}}