diff --git a/lib/rules/valid-v-model.js b/lib/rules/valid-v-model.js
index d004ef3ba..c83bc06c1 100644
--- a/lib/rules/valid-v-model.js
+++ b/lib/rules/valid-v-model.js
@@ -44,9 +44,12 @@ function isValidElement (node) {
* @returns {boolean} `true` if the node can be LHS.
*/
function isLhs (node) {
- return node != null && (
+ return node !== null && (
node.type === 'Identifier' ||
- node.type === 'MemberExpression'
+ node.type === 'MemberExpression' || (
+ node.type === 'VFilterSequenceExpression' &&
+ isLhs(node.expression)
+ )
)
}
@@ -130,6 +133,7 @@ module.exports = {
})
}
}
+
if (!utils.hasAttributeValue(node)) {
context.report({
node,
@@ -137,6 +141,7 @@ module.exports = {
message: "'v-model' directives require that attribute value."
})
}
+
if (node.value) {
if (!isLhs(node.value.expression)) {
context.report({
diff --git a/tests/lib/rules/valid-v-model.js b/tests/lib/rules/valid-v-model.js
index f5abd2dde..a00344aa6 100644
--- a/tests/lib/rules/valid-v-model.js
+++ b/tests/lib/rules/valid-v-model.js
@@ -114,6 +114,10 @@ tester.run('valid-v-model', rule, {
{
filename: 'test.vue',
code: ''
+ },
+ {
+ filename: 'test.vue',
+ code: ''
}
],
invalid: [