gpt4 book ai didi

angularjs - 如何动态地将服务注入(inject)到AngularJS指令中

转载 作者:行者123 更新时间:2023-12-02 23:07:23 24 4
gpt4 key购买 nike

我的指令是构建一个带有删除按钮的脚手架表。我设置了一个名为 Post 的服务,因此当我调用该指令时,我在元素上包含了一个 servicename 属性。如何根据我包含的服务名称属性动态注入(inject)我的服务?或者有更好的方法吗?

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());
});
}
}
};
}]);

最佳答案

我不确定这是解决这个问题的最佳方法。您可能应该有一个服务来负责与此 lassoDirective 相关的所有数据,因此您可以像平常一样注入(inject)它。

但是您也许可以使用 $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();
};
}
}
});

如果您希望您的服务根据单击的指令执行不同的操作,那么最好只传递与该指令相关的服务附加参数?不确定您的情况如何,因此如果不适用,请忽略此常见问题。

关于angularjs - 如何动态地将服务注入(inject)到AngularJS指令中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25168347/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com