diff --git a/packages/uni-template-compiler/__tests__/compiler-app-plus-extra.service.spec.js b/packages/uni-template-compiler/__tests__/compiler-app-plus-extra.service.spec.js
index daf612c7a7cfc708b61b2d58cac228fe1288f867..d5a2c42d8ab3ff536e03ab2325be3fa5d34490aa 100644
--- a/packages/uni-template-compiler/__tests__/compiler-app-plus-extra.service.spec.js
+++ b/packages/uni-template-compiler/__tests__/compiler-app-plus-extra.service.spec.js
@@ -79,6 +79,14 @@ describe('codegen', () => {
'ABCD',
`with(this){return _c('current-user',{attrs:{"_i":0}},[_v("")])}`
)
+ assertCodegen(
+ `
+
+ {{item.name}}
+
+ `,
+ `with(this){return _c('current-user',{attrs:{"_i":0},scopedSlots:_u([{key:"default",fn:function({result}, _svm, _si){return _l((_svm._$s(("2-"+_si),'f',{forItems:result.list})),function(item,index,$20,$30){return _c('view',{key:_svm._$s(("2-"+_si),'f',{forIndex:$20,key:("2-"+_si)+'-'+$30}),attrs:{"_i":(("2-"+_si)+$30)}},[_v((_svm._$s((("2-"+_si)+$30),'t0',_s(item.name))))])})}}])})}`
+ )
})
it('generate keep-alive', () => {
diff --git a/packages/uni-template-compiler/__tests__/demo.js b/packages/uni-template-compiler/__tests__/demo.js
index f0af7556e946cd04103329cb92528b2342688bb8..e1afb887416fcd5758b26486ec58e6fea22819a4 100644
--- a/packages/uni-template-compiler/__tests__/demo.js
+++ b/packages/uni-template-compiler/__tests__/demo.js
@@ -1,7 +1,11 @@
const compiler = require('../lib')
const res = compiler.compile(
`
-{{ bar }}
+
+
+ {{item.name}}
+
+
`, {
resourcePath: '/User/fxy/Documents/test.wxml',
isReservedTag: function (tag) {
@@ -14,7 +18,7 @@ const res = compiler.compile(
platform: 'app-plus'
},
filterModules: ['swipe'],
- // service: true,
+ service: true,
view: true
})
diff --git a/packages/uni-template-compiler/lib/app/service.js b/packages/uni-template-compiler/lib/app/service.js
index 21b1c6ea937ed5dceadd097bbb91dc8abeaf0c73..5aafc4362f282c30843504c5fb3aff21d4d58526 100644
--- a/packages/uni-template-compiler/lib/app/service.js
+++ b/packages/uni-template-compiler/lib/app/service.js
@@ -100,7 +100,7 @@ function transformNode (el, parent, state, isScopedSlot) {
parseIs(el, genVar)
parseFor(el, createGenVar, isScopedSlot)
- parseKey(el)
+ parseKey(el, isScopedSlot)
parseIf(el, createGenVar, isScopedSlot)
parseBinding(el, genVar)
diff --git a/packages/uni-template-compiler/lib/app/util.js b/packages/uni-template-compiler/lib/app/util.js
index b682bf2225e66dd2f787af196e74479b90a12112..db1aee6dccfd07772b53715de8d1f241a71bd950 100644
--- a/packages/uni-template-compiler/lib/app/util.js
+++ b/packages/uni-template-compiler/lib/app/util.js
@@ -119,6 +119,9 @@ function updateScopedSlotEleId (el, state) {
}
const it = '_si'
const newId = getNewId(el.attrsMap[ID], it)
+ if (el.forId) {
+ el.forId = getNewId(el.forId, it)
+ }
addRawAttr(el, ID, newId)
if (el.attrs) {
const attr = el.attrs.find(attr => attr.name === ID)