Przeglądaj źródła

Add missing string handler in v-for (#4499)

Fix #4497
Eduardo San Martin Morote 9 lat temu
rodzic
commit
974247fd8e

+ 1 - 1
src/core/instance/render.js

@@ -178,7 +178,7 @@ export function renderMixin (Vue: Class<Component>) {
     render: () => VNode
   ): ?Array<VNode> {
     let ret: ?Array<VNode>, i, l, keys, key
-    if (Array.isArray(val)) {
+    if (Array.isArray(val) || typeof val === 'string') {
       ret = new Array(val.length)
       for (i = 0, l = val.length; i < l; i++) {
         ret[i] = render(val[i], i)

+ 18 - 0
test/unit/features/directives/for.spec.js

@@ -428,4 +428,22 @@ describe('Directive v-for', () => {
       expect(vm.$el.textContent).toMatch(/\s+foo\s+bar\s+/)
     }).then(done)
   })
+
+  it('strings', done => {
+    const vm = new Vue({
+      data: {
+        text: 'foo'
+      },
+      template: `
+        <div>
+          <span v-for="letter in text">{{ letter }}.</span
+        </div>
+      `
+    }).$mount()
+    expect(vm.$el.textContent).toMatch('f.o.o.')
+    vm.text += 'bar'
+    waitForUpdate(() => {
+      expect(vm.$el.textContent).toMatch('f.o.o.b.a.r.')
+    }).then(done)
+  })
 })