如何在不使用 $rootScope 的情况下以从 Controller 传递 URL 的方式定义动态工厂?
.factory('getData', function ($resource,$rootScope) {
return $resource($rootScope.url, {id:'@id'}{
'query': { method: 'GET', isArray: true},
'get': {
method: 'GET',
isArray: true,
transformResponse: function (data) {
data = angular.fromJson(data);
return data;
}
}
});
})
Controller
var data = [];
$rootScope.url='/userDetails/userId?userId=userID'
getData.get({id:'123'}).$promise.then(function(data){
angular.forEach(data,function(dataVal){
//
},data)
最佳答案
您应该在工厂中创建一个函数,然后在调用它时将 URL 和 id 作为参数传递给该函数。
对于您的代码,工厂应如下所示:
.factory('getData', function($resource, $rootScope) {
return {
query: function(url, id){
return $resource(url, {userId: id}, {
'query': {
method: 'GET',
isArray:true
},
'get': {
method: 'GET',
isArray:true,
transformResponse: function(data) {
console.log(data);
data = angular.fromJson(data);
return data;
}
}
}).get();
}
}
})
然后你会像这样调用它
getData.query(url,id)
在 Controller 中。
关于angularjs - 不使用全局变量的 angular.factory 中 $resource 的动态 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38313714/