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

Why cant I make query call on Factory but I can on Controller? Angular

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!
 });

工厂可以不调用query吗?我可以使用 $save、$update 在工厂上调用 Delete、put 等。但不能使用 GET(查询)到 return 数据列表。仅适用于控制器。

您有一个操作是同步的 (query),另一个操作 (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;
}