|
@@ -81,18 +81,22 @@ export function interceptInit(callback) { initInterceptors.push(callback) }
|
|
export function initTree(el, walker = walk, intercept = () => {}) {
|
|
export function initTree(el, walker = walk, intercept = () => {}) {
|
|
deferHandlingDirectives(() => {
|
|
deferHandlingDirectives(() => {
|
|
walker(el, (el, skip) => {
|
|
walker(el, (el, skip) => {
|
|
- if (!el._x_isInit) {
|
|
|
|
- intercept(el, skip)
|
|
|
|
|
|
+ // Prevent initing an element multiple times...
|
|
|
|
+ if (el._x_inited) {
|
|
|
|
+ el._x_ignore && skip()
|
|
|
|
|
|
- initInterceptors.forEach(i => i(el, skip))
|
|
|
|
- directives(el, el.attributes).forEach(handle => handle())
|
|
|
|
|
|
+ return
|
|
}
|
|
}
|
|
|
|
|
|
- if (el._x_ignore) {
|
|
|
|
- skip()
|
|
|
|
- } else {
|
|
|
|
- el._x_isInit = true
|
|
|
|
- }
|
|
|
|
|
|
+ intercept(el, skip)
|
|
|
|
+
|
|
|
|
+ initInterceptors.forEach(i => i(el, skip))
|
|
|
|
+
|
|
|
|
+ directives(el, el.attributes).forEach(handle => handle())
|
|
|
|
+
|
|
|
|
+ el._x_ignore && skip()
|
|
|
|
+
|
|
|
|
+ el._x_inited = true
|
|
})
|
|
})
|
|
})
|
|
})
|
|
}
|
|
}
|
|
@@ -101,6 +105,7 @@ export function destroyTree(root) {
|
|
walk(root, el => {
|
|
walk(root, el => {
|
|
cleanupAttributes(el)
|
|
cleanupAttributes(el)
|
|
cleanupElement(el)
|
|
cleanupElement(el)
|
|
|
|
+
|
|
delete el._x_isInit
|
|
delete el._x_isInit
|
|
})
|
|
})
|
|
}
|
|
}
|