У меня есть директива, которая управляет персонализированным мультиселектором. Иногда из главного контроллера я хотел бы очистить все мультиселекты. У меня есть значение multiselect, заполняющее двунаправленную переменную «filter
», и я могу удалить контент оттуда, но при этом мне также нужно изменить некоторые стили и другой контент. Другими словами: я должен вызвать метод, принадлежащий директиве, от кнопки, принадлежащей контроллеру. Это даже с этим Возможным структуру данных ?:Как вызвать функцию директивы от контроллера на угловом
(Кстати, я нашел другие вопросы и примеры, но их указания не имеют свои собственные рамок.)
function MultiselectDirective($http, $sce) {
return {
restrict: 'E',
replace: true,
templateUrl: 'temp.html',
scope: {
filter: "=",
name: "@",
url: "@"
},
link: function(scope, element, attrs){
//do stuff
scope.function_i_need_to_call = function(){
//updates directtive template styles
}
}
}
}
определяют как $ родительской области видимости функции, например:. Объем $ parent.function_i_need_to_call = функция() {..}) внутри директивы, а затем вызывать тот же метод в контроллере с $ объеме. function_i_need_to_call() – saikumar
Вы можете 'scope. $ watch'' filter', а затем вызвать функцию в соответствии с текущим значением. –
@saikumar, но что, если директива работает в нескольких элементах? – Vandervals