如何在不使用$ rootScope的情况下从控制器传递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;
}
}
});
})
控制器
var data = [];
$rootScope.url='/userDetails/userId?userId=userID'
getData.get({id:'123'}).$promise.then(function(data){
angular.forEach(data,function(dataVal){
//
},data)
答案 0 :(得分:4)
您应该在工厂中创建一个函数,然后在调用它时将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)
一样调用它。