2015-09-13 2 views
1

Я только что нашел директиву v-el в Vue.js, что является большим удобством для DOM-манипуляции.Угловой эквивалент v-el

F.ex. Я мог бы отметить элемент с ним:

<button v-el="getCustomerButton">Get customers</button>

и в использовании компонентов вю, например this.$$.getCustomerButton.focus() сосредоточиться на кнопку.

Есть ли какой-то эквивалент v-el в angularjs?

С уважением, Нильс.

ответ

1

Вы можете достигнуть того же результата с помощью следующей директивы:

angular.module('yourModuleNameHere').directive('vEl', [function() { 
    return { 
    restrict: 'A', 
    link: function(scope, element) { 
     // do whatever you want with element 
     // just element is the jqLite-wrapped object 
     // element[0] is the raw DOM node 
    } 
    }; 
}]); 

Также отметим, что element обернут как объект jqLite, если вы хотите необработанный узел DOM, вы можете получить его с element[0].

В общем случае, когда вы применили директиву к элементу, вы можете получить доступ к этому элементу в функции link.

+0

Правильно, однако для каждого отмеченного элемента потребуется новая директива. Поэтому для двух разных действий потребуются две разные директивы, которые я считаю негибкими. V-el можно использовать повторно для разных действий. – skovmand

+0

В качестве альтернативы вы можете передать переменную '$ event' в' ngClick', 'ngBlur' и т. Д. И получить элемент с' $ event.target'. –