diff --git a/examples/commits/index.html b/examples/commits/index.html
index a80eaa46..116fb86f 100644
--- a/examples/commits/index.html
+++ b/examples/commits/index.html
@@ -18,7 +18,8 @@
font-weight: bold;
}
-
+
+
diff --git a/examples/elastic-header/index.html b/examples/elastic-header/index.html
index 63f75fa0..81df1c94 100644
--- a/examples/elastic-header/index.html
+++ b/examples/elastic-header/index.html
@@ -4,7 +4,8 @@
-
+
+
diff --git a/examples/firebase/index.html b/examples/firebase/index.html
index e8c54bd5..eee783ac 100644
--- a/examples/firebase/index.html
+++ b/examples/firebase/index.html
@@ -5,7 +5,8 @@
-
+
+
diff --git a/examples/grid/index.html b/examples/grid/index.html
index c9d58fd4..d668cd76 100644
--- a/examples/grid/index.html
+++ b/examples/grid/index.html
@@ -4,13 +4,14 @@
Vue.js grid component example
-
+
+
diff --git a/examples/markdown/index.html b/examples/markdown/index.html
index 42f228fa..9ca98746 100644
--- a/examples/markdown/index.html
+++ b/examples/markdown/index.html
@@ -6,7 +6,8 @@
-
+
+
diff --git a/examples/modal/index.html b/examples/modal/index.html
index 5f530ab9..302e9470 100644
--- a/examples/modal/index.html
+++ b/examples/modal/index.html
@@ -3,7 +3,8 @@
Vue.js Modal Example
-
+
+
diff --git a/examples/move-animations/index.html b/examples/move-animations/index.html
index dc0f80e0..ae246607 100644
--- a/examples/move-animations/index.html
+++ b/examples/move-animations/index.html
@@ -29,7 +29,8 @@
}
-
+
+
diff --git a/examples/select2/index.html b/examples/select2/index.html
index f625c8a5..b2344c6e 100644
--- a/examples/select2/index.html
+++ b/examples/select2/index.html
@@ -3,7 +3,8 @@
Vue.js custom directive integration example (select2)
-
+
+
diff --git a/examples/svg/index.html b/examples/svg/index.html
index 7b4ca5db..faf731df 100644
--- a/examples/svg/index.html
+++ b/examples/svg/index.html
@@ -4,7 +4,8 @@
Vue.js SVG example
-
+
+
diff --git a/examples/todomvc/index.html b/examples/todomvc/index.html
index 063229bc..0477f0d0 100644
--- a/examples/todomvc/index.html
+++ b/examples/todomvc/index.html
@@ -1,68 +1,69 @@
-
-
-
Vue.js • TodoMVC
-
-
-
-
-
-
-
+
+
+
Vue.js • TodoMVC
+
+
+
+
+
+
+
-
-
-
-
+
+
+
+
+
diff --git a/examples/tree/index.html b/examples/tree/index.html
index 1bb8611c..05df3206 100644
--- a/examples/tree/index.html
+++ b/examples/tree/index.html
@@ -20,7 +20,8 @@
list-style-type: dot;
}
-
+
+
diff --git a/package.json b/package.json
index c16ceefb..794bcaa4 100644
--- a/package.json
+++ b/package.json
@@ -26,7 +26,7 @@
"test": "npm run lint && flow check && npm run test:types && npm run test:cover && npm run test:e2e -- --env phantomjs && npm run test:ssr",
"test:unit": "karma start build/karma.unit.config.js",
"test:cover": "karma start build/karma.cover.config.js",
- "test:e2e": "npm run build -- vue.js && node test/e2e/runner.js",
+ "test:e2e": "npm run build -- vue.min.js && node test/e2e/runner.js",
"test:ssr": "npm run build:ssr && VUE_ENV=server jasmine JASMINE_CONFIG_PATH=test/ssr/jasmine.json",
"test:sauce": "npm run sauce -- 0 && npm run sauce -- 1 && npm run sauce -- 2",
"test:types": "tsc -p ./types/test/tsconfig.json",
diff --git a/src/compiler/parser/index.js b/src/compiler/parser/index.js
index 4b51151c..4978390d 100644
--- a/src/compiler/parser/index.js
+++ b/src/compiler/parser/index.js
@@ -130,14 +130,16 @@ export function parse (
}
function checkRootConstraints (el) {
- if (process.env.NODE_ENV !== 'production') {
+ if (process.env.NODE_ENV !== 'production' && !warned) {
if (el.tag === 'slot' || el.tag === 'template') {
+ warned = true
warn(
`Cannot use <${el.tag}> as component root element because it may ` +
'contain multiple nodes:\n' + template
)
}
if (el.attrsMap.hasOwnProperty('v-for')) {
+ warned = true
warn(
'Cannot use v-for on stateful component root element because ' +
'it renders multiple elements:\n' + template
@@ -150,12 +152,12 @@ export function parse (
if (!root) {
root = element
checkRootConstraints(root)
- } else if (process.env.NODE_ENV !== 'production' && !stack.length && !warned) {
+ } else if (!stack.length) {
// allow 2 root elements with v-if and v-else
if (root.if && element.else) {
checkRootConstraints(element)
root.elseBlock = element
- } else {
+ } else if (process.env.NODE_ENV !== 'production' && !warned) {
warned = true
warn(
`Component template should contain exactly one root element:\n\n${template}`
diff --git a/test/e2e/specs/grid.js b/test/e2e/specs/grid.js
index ad47c8ff..7c273359 100644
--- a/test/e2e/specs/grid.js
+++ b/test/e2e/specs/grid.js
@@ -82,6 +82,12 @@ module.exports = {
{ name: 'Chuck Norris', power: Infinity }
])
+ browser
+ .clearValue('input[name="query"]')
+ .assert.count('p', 0)
+ .setValue('input[name="query"]', 'stringthatdoesnotexistanywhere')
+ .assert.count('p', 1)
+
browser.end()
function assertTable (data) {