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: [