Last updated
Last updated
Для жизненного цикла директивы можно указать следующие хуки (все они опциональны):
bind
: вызывается однократно, при первичном связывании директивы с элементом. Здесь можно поместить код инициализации.
inserted
: вызывается после вставки связанного элемента внутрь элемента родителя (заметьте, что сам родитель может на этот момент и не принадлежать ещё основному дереву элементов).
update
: вызывается после обновления VNode компонента-контейнера, но, возможно, до обновления дочерних элементов. Значение директивы к этому моменту может измениться, а может и нет. Сравнивая текущее и прошлое значения, вы можете избежать избыточных операций (см. ниже об аргументах хуков).
Подробнее мы обсудим VNodes , когда будем разбирать .
componentUpdated
: вызывается после обновления как VNode компонента-контейнера, так и VNode его потомков.
unbind
: вызывается однократно, при отвязывании директивы от элемента.
В следующем разделе мы рассмотрим аргументы, передаваемые в эти хуки (а именно: el
, binding
, vnode
и oldVnode
).
В хуки передаются следующие параметры:
el
: Элемент, к которому привязана директива. Можно использовать для прямых манипуляций с DOM.
binding
: Объект, содержащий следующие свойства:
name
: Название директивы, без указания префикса v-
.
value
: Значение, переданное в директиву. Например, для v-my-directive="1 + 1"
значением будет 2
.
oldValue
: Предыдущее переданное в директиву значение. Доступно только для хуков update
и componentUpdated
, и передаётся независимо от того, произошло ли в действительности его изменение.
expression
: Выражение-строка, переданное в директиву. Например, для v-my-directive="1 + 1"
это будет "1 + 1"
.
arg
: Аргумент, переданный в директиву, в случае его наличия. Например, для v-my-directive:foo
это будет "foo"
.
modifiers
: Объект, содержащий модификаторы, если они есть. Например, для v-my-directive.foo.bar
, объектом модификаторов будет { foo: true, bar: true }
.
vnode
: Виртуальный элемент, созданный компилятором Vue. См. для подробностей.
oldVnode
: Предыдущий виртуальный элемент, доступный только для хуков update
и componentUpdated
.
Пример пользовательской директивы, использующей некоторые из описанных возможностей:
Все аргументы, кроме el
, следует понимать как только для чтения и никогда не изменять их. В случае необходимости передать информацию между хуками рекомендуем воспользоваться .