ソースを参照

fix #198 v-repeat diff issue with identifier

Evan You 12 年 前
コミット
0faf0e6ac9
1 ファイル変更10 行追加4 行削除
  1. 10 4
      src/directives/repeat.js

+ 10 - 4
src/directives/repeat.js

@@ -143,7 +143,9 @@ module.exports = {
         // second pass, collect old reused and destroy unused
         for (i = 0, l = oldVMs.length; i < l; i++) {
             vm = oldVMs[i]
-            item = vm.$data
+            item = this.arg
+                ? vm.$data[this.arg]
+                : vm.$data
             if (item.$reused) {
                 vm.$reused = true
                 delete item.$reused
@@ -158,7 +160,9 @@ module.exports = {
                 vms[vm.$index] = vm
             } else {
                 // this one can be destroyed.
-                delete item.__emitter__[this.identifier]
+                if (item.__emitter__) {
+                    delete item.__emitter__[this.identifier]
+                }
                 vm.$destroy()
             }
         }
@@ -229,8 +233,10 @@ module.exports = {
                 }
             })
 
-        // attach an ienumerable identifier
-        data.__emitter__[this.identifier] = true
+        if (isObject) {
+            // attach an ienumerable identifier to the raw data
+            (raw || data).__emitter__[this.identifier] = true
+        }
 
         if (wrap) {
             var self = this,