我的指示是使用删除按钮构建一个脚手架表。我有一个名为Post的服务设置,所以当我调用指令时我会在元素上包含一个servicename属性。如何根据我的服务名称属性I动态注入我的服务?或者有更好的方法吗?
var lassoDirectives = angular.module('lassoDirectives', []);
lassoDirectives.directive('autoTable', ['parse', function(parse) {
return {
restrict: 'AE',
scope: {
data: '=',
modelname: '='
},
templateUrl: 'http://local.angular.com/webroot/app/templates/directives/auto-table.html',
controller: function($scope) {
console.log(parse);
$scope.deleteItem = function(id) {
console.log(id);
// rocket = modelname.query();
//console.log(rocket);
}
$scope.check = function() {
parse.get("Posts", 123, function(response) {
console.log(response.toString());
});
}
}
};
}]);
答案 0 :(得分:4)
我不确定这是解决问题的最佳方法。您可能应该只有一项服务,负责与此lassoDirective
相关的所有数据,因此您可以正常注入它。
但您可以使用$injector
提供商,例如......
.directive('autoTable', function($injector) {
return {
restrict: 'EA',
scope: {
servicename: '='
},
controller: function(scope) {
var service = $injector.get(scope.servicename);
scope.deleteItem = function(Id) {
del = service.delete({Id: Id});
items = service.query();
};
}
}
});
如果您希望您的服务根据所点击的指令执行不同的操作,那么最好只传递与该指令相关的服务附加参数?不确定你的情况如何,如果N / A,请忽略这个常见。