我有一个不止一次调用的函数(在不同的指令中)。
那么有没有办法在每个指令中调用一个函数? 一种解决方案是将功能作为服务。 但是服务确实需要一个返回值,不是吗?
this.changeDesign = function (currentstep) {
//do something
};
这种方法我多次打电话。
答案 0 :(得分:2)
您应该考虑避免使用全局变量或在全局范围内添加某些内容。也许它现在有效,但如果你的项目变大,你可能会遇到很多问题。更多信息,例如:https://gist.github.com/hallettj/64478
这是一个例子,你如何使用工厂,你可以注入你的指令(编码风格受John Papa https://github.com/johnpapa/angular-styleguide#factories启发):
(function () {
"use strict";
angular.module('my-app').provider('MyFactory', MyFactory);
MyFactory.$inject = [];
function MyFactory() {
var service = {
changeDesign: myChangeDesignImpl
};
function myChangeDesignImpl() { }
this.$get = function() {
return service ;
};
}
})();
您现在可以将服务注入到这样的指令中:
(function () {
"use strict";
angular.module('my-app').directive('MyDirective', MyDirective);
MyDirective.$inject = ["MyFactory"];
function MyDirective(MyFactory) {
var directive = {
restrict: 'E',
template: "/template.html",
link: link
};
return directive;
function link(scope, el, attr) {
MyFactory.changeDesign();
}
}
})();
答案 1 :(得分:1)
你可以在指令中做到这一点,你将对你的元素进行细化。
angular.module('myDesignModule', [])
.directive('myDesignDirective', function() {
return {
link: function(scope, element, attrs, ctrl){
element.addClass("myClass");
}
};)