Некоторые директивы моей программы должны иметь довольно сложную манипуляцию с DOM и некоторые другие действия как в функции компиляции, так и в ссылках. Если я не использовал директивы, я бы разделил этот код на функции и вывел их вне компиляции fn.AngularJS: вспомогательные функции рефакторинга из компиляции() и ссылки()
На данный момент у меня есть:
directive('myDir',...):
compile: function (element, attrs) {
var a1,a2;
a1 = action1() {...};
a2 = action2() {...};
a1(); a2();
return { link function }
}
Вместо этого, я предпочел бы:
directive('myDir',...):
compile: function (element, attrs) {
a1(); a2(); // a1 and a2 declared somewhere else
return { link function }
}
a1 и a2 может быть объявлено где-то в директиве, чтобы сохранить компонент многократного использования, но, в то же время имеют читаемый код. определение этих функций в настоящее время входит в эту функцию компиляции (не разделяемой между директивами). он нужен только там, и он может быть довольно длинным.
Что было бы красивым способом организовать это?
Я думал о оберточной директиву в функции:
(function() {
var a1 = function(params) {};
myapp.directive(...compile and link functions, as usual);
})();
хороший, я не рассматривал этот вариант. Я предполагаю, что это более или менее то, что я предложил, но не нуждающийся в дополнительном '(function() {})()'. благодаря! –