为什么我不能在 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;
}
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;
}