Fra*_*lin 1 angularjs angularjs-service
无论如何,使用字符串变量调用角度服务
$scope.serviceList=["yearDetails","monthDetails","dayDetails"];
//controller
$scope.getDetails=function(type,index){
if(type==$scope.serviceList[index]){
// if i will call like this yearDetails.query(function(data){}); it is working
//here i am getting "yearDetails"
$scope.serviceList[index].query(function(data){
console.log(data);
});
}
}
//service
.factory('yearDetails', function($resource){
return $resource('/getyearDetails', {}, {
query: { method:'POST', params:{}, isArray:false }
});
})
.factory('monthDetails', function($resource){
return $resource('/getmonthDetails', {}, {
query: { method:'POST', params:{}, isArray:false }
});
})
.factory('dayDetails', function($resource){
return $resource('/getdayDetails', {}, {
query: { method:'POST', params:{}, isArray:false }
});
})
Run Code Online (Sandbox Code Playgroud)
我想你可能会让事情变得复杂,让事情变得简单.
创建一个detailsService包含您需要的所有方法.
.factory('detailsService', function ($resource) {
return {
yearDetails: $resource('/getyearDetails', {}, {
query: {
method: 'POST',
params: {},
isArray: false
}
}),
monthDetails: $resource('/getmonthDetails', {}, {
query: {
method: 'POST',
params: {},
isArray: false
}
}),
dayDetails: $resource('/getdayDetails', {}, {
query: {
method: 'POST',
params: {},
isArray: false
}
})
});
Run Code Online (Sandbox Code Playgroud)
在您的控制器中,您可以访问该方法 key
$scope.getDetails=function(type,index){
detailsService[type].query(function(data){
console.log(data);
});
}
Run Code Online (Sandbox Code Playgroud)
直接回答你的问题,如何通过字符串获取angularJS服务.
// inject $injector to your controller
var yourService = $injector.get('YourServiceName');
Run Code Online (Sandbox Code Playgroud)
但是,不要像@Mark在他的回答中所说的那样复杂化:)
| 归档时间: |
|
| 查看次数: |
6038 次 |
| 最近记录: |