@@ -2,9 +2,27 @@ function getSlotsName (obj) {
2
2
if ( ! obj ) {
3
3
return ''
4
4
}
5
- return Object . keys ( obj ) . map ( k => {
6
- return `$slot${ k } :'${ obj [ k ] } '`
7
- } ) . join ( ',' )
5
+ // wxml模板中 data="{{ a:{a1:'string2'}, b:'string'}}" 键a不能放在最后,会出错
6
+ return tmplateSlotsObj ( obj )
7
+ . concat (
8
+ Object . keys ( obj ) . map ( function ( k ) {
9
+ return '$slot' + k + ":'" + obj [ k ] + "'"
10
+ } )
11
+ )
12
+ . join ( ',' )
13
+ }
14
+
15
+ function tmplateSlotsObj ( obj ) {
16
+ if ( ! obj ) {
17
+ return [ ]
18
+ }
19
+ // wxml模板中 data="{{ a:{a1:'string2'}, b:'string'}}" 键a1不能写成 'a1' 带引号的形式,会出错
20
+ const $for = Object . keys ( obj )
21
+ . map ( function ( k ) {
22
+ return `${ k } :'${ obj [ k ] } '`
23
+ } )
24
+ . join ( ',' )
25
+ return $for ? [ `$for:{${ $for } }` ] : [ ]
8
26
}
9
27
10
28
export default {
@@ -14,8 +32,14 @@ export default {
14
32
convertComponent ( ast , components , slotName ) {
15
33
const { attrsMap, tag, mpcomid, slots } = ast
16
34
if ( slotName ) {
17
- attrsMap [ 'data' ] = `{{...$root[$k], $root}}`
18
- attrsMap [ 'is' ] = `{{${ slotName } }}`
35
+ attrsMap [ 'data' ] = "{{...$root[$k], $root}}"
36
+ // bindedName is available when rendering slot in v-for
37
+ const bindedName = attrsMap [ 'v-bind:name' ]
38
+ if ( bindedName ) {
39
+ attrsMap [ 'is' ] = "{{$for[" + bindedName + "]}}"
40
+ } else {
41
+ attrsMap [ 'is' ] = "{{" + slotName + "}}"
42
+ }
19
43
} else {
20
44
const slotsName = getSlotsName ( slots )
21
45
const restSlotsName = slotsName ? `, ${ slotsName } ` : ''
0 commit comments