|
@@ -489,16 +489,25 @@ function checkComponent (el, options) {
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
|
function checkTerminalDirectives (el, options) {
|
|
function checkTerminalDirectives (el, options) {
|
|
|
- if (_.attr(el, 'pre') !== null ||
|
|
|
|
|
- el.hasAttribute('v-else')) {
|
|
|
|
|
|
|
+ // skip v-pre
|
|
|
|
|
+ if (_.attr(el, 'pre') !== null) {
|
|
|
return skip
|
|
return skip
|
|
|
}
|
|
}
|
|
|
|
|
+ // skip v-else block, but only if following v-if
|
|
|
|
|
+ if (el.hasAttribute('v-else')) {
|
|
|
|
|
+ var prev = el.previousElementSibling
|
|
|
|
|
+ if (prev && prev.hasAttribute('v-if')) {
|
|
|
|
|
+ return skip
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
var value, dirName
|
|
var value, dirName
|
|
|
for (var i = 0, l = terminalDirectives.length; i < l; i++) {
|
|
for (var i = 0, l = terminalDirectives.length; i < l; i++) {
|
|
|
dirName = terminalDirectives[i]
|
|
dirName = terminalDirectives[i]
|
|
|
- if ((value = _.attr(el, dirName)) !== null) {
|
|
|
|
|
|
|
+ /* eslint-disable no-cond-assign */
|
|
|
|
|
+ if (value = el.getAttribute('v-' + dirName)) {
|
|
|
return makeTerminalNodeLinkFn(el, dirName, value, options)
|
|
return makeTerminalNodeLinkFn(el, dirName, value, options)
|
|
|
}
|
|
}
|
|
|
|
|
+ /* eslint-enable no-cond-assign */
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -592,6 +601,12 @@ function compileDirectives (attrs, options) {
|
|
|
}
|
|
}
|
|
|
// extract directive name
|
|
// extract directive name
|
|
|
dirName = name.slice(2)
|
|
dirName = name.slice(2)
|
|
|
|
|
+
|
|
|
|
|
+ // skip v-else (when used with v-show)
|
|
|
|
|
+ if (dirName === 'else') {
|
|
|
|
|
+ continue
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
dirDef = resolveAsset(options, 'directives', dirName)
|
|
dirDef = resolveAsset(options, 'directives', dirName)
|
|
|
|
|
|
|
|
if (process.env.NODE_ENV !== 'production') {
|
|
if (process.env.NODE_ENV !== 'production') {
|