ref.js 530 B

12345678910111213141516171819
  1. /* @flow */
  2. import { addHook } from '../helpers'
  3. export default function ref (el: ASTElement, dir: ASTDirective) {
  4. // go up and check if this node is inside a v-for
  5. let isFor = false
  6. let parent = el
  7. while (parent) {
  8. if (parent.for !== undefined) {
  9. isFor = true
  10. }
  11. parent = parent.parent
  12. }
  13. // registerRef: _r(name, ref, vFor?, remove?)
  14. const code = `_r("${dir.arg}",n1.child||n1.elm,${isFor ? 'true' : 'false'}`
  15. addHook(el, 'insert', `${code},false)`)
  16. addHook(el, 'destroy', `${code},true)`)
  17. }