@@ -41,17 +41,22 @@ function isUsingIterationVar (vFor, vBindKey) {
41
41
* @param {RuleContext } context The rule context to report.
42
42
* @param {ASTNode } vFor The attribute node of `v-for` to check.
43
43
* @param {ASTNode } element The element node to check.
44
+ * @param {boolean } child Are we working on child element.
44
45
*/
45
- function checkKey ( context , vFor , element ) {
46
+ function checkKey ( context , vFor , element , child ) {
46
47
if ( element . name === 'template' ) {
47
48
for ( const child of element . children ) {
48
49
if ( child . type === 'VElement' ) {
49
- checkKey ( context , vFor , child )
50
+ checkKey ( context , vFor , child , true )
50
51
}
51
52
}
52
53
return
53
54
}
54
55
56
+ if ( child && utils . hasDirective ( element , 'for' ) ) { // template(v-for) > div(v-for)
57
+ return
58
+ }
59
+
55
60
const vBindKey = utils . getDirective ( element , 'bind' , 'key' )
56
61
57
62
if ( utils . isCustomComponent ( element ) && vBindKey == null ) {
@@ -83,7 +88,7 @@ function create (context) {
83
88
"VAttribute[directive=true][key.name='for']" ( node ) {
84
89
const element = node . parent . parent
85
90
86
- checkKey ( context , node , element )
91
+ checkKey ( context , node , element , false )
87
92
88
93
if ( node . key . argument ) {
89
94
context . report ( {
0 commit comments