#angularjs
#angularjs
Вопрос:
Я новичок в angular. И я экспериментировал с «директивами». При использовании директив я нашел следующие 2 способа использования контроллера с директивой.
Подход 1
angular.module('folderSettingApp')
.directive('templateRenderer', function () {
return {
// other options
, controller: 'GridController'
};
});
Подход 2
angular.module('folderSettingApp')
.directive('templateRenderer', function () {
return {
// other options
, controller: function ($scope, $attrs) {
// add some functions here
}
};
});
Я не уверен, какой подход использовать, когда любое предложение будет оценено.
Ответ №1:
Не так часто использовать какой из них, он основан на вашем использовании,
Например, если вы хотите использовать директиву несколько раз в своем приложении, лучше не определять какой-либо контроллер в своей директиве, например:
.directive('exampleDirective', function (){
return {
restrict: "A", // OR E OR AE OR C
template: "<div>YOUR TEMPLATE HERE</div>",
link: function (scope, element, attributes) {
// what ever function you want whould be here:
}
}
});
Но, как правило, ради модульности angular не рекомендуется определять контроллер в директивах.
Потому что цель директивы — использовать ее в нескольких контроллерах и нескольких представлениях.
Таким образом, определение контроллера в директиве просто делает эту директиву менее модульной при ограниченном использовании.
Ответ №2:
Один из аргументов в пользу отдельного контроллера — для простоты тестирования. Совсем не сложно писать тесты, которые создают экземпляры и позволяют тестировать отдельный код на отдельном контроллере.