From 5f185296921e5bf6bdfb82febd8f2663b5d1a97a Mon Sep 17 00:00:00 2001 From: lyh2668 Date: Sun, 3 Dec 2017 00:20:59 +0800 Subject: [PATCH 1/6] Update render-list.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加v-for循环对迭代器的支持 --- .../instance/render-helpers/render-list.js | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/core/instance/render-helpers/render-list.js b/src/core/instance/render-helpers/render-list.js index abe99db4d6d..e410adc28f3 100644 --- a/src/core/instance/render-helpers/render-list.js +++ b/src/core/instance/render-helpers/render-list.js @@ -25,13 +25,27 @@ export function renderList ( ret[i] = render(i + 1, i) } } else if (isObject(val)) { - keys = Object.keys(val) - ret = new Array(keys.length) - for (i = 0, l = keys.length; i < l; i++) { - key = keys[i] - ret[i] = render(val[key], key, i) + keys = Object.keys(val); + if (keys.length === 0 && val.toString().indexOf('Iterator') > -1) { + ret = new Array() + i = 0; + while (true) { + if (typeof val.next !== 'function') { + break; + } + var next = val.next() + if (next.done) { + break; + } + ret.push(render(next.value, i++)); + } + } else { + ret = new Array(keys.length); + for (i = 0, l = keys.length; i < l; i++) { + key = keys[i]; + ret[i] = render(val[key], key, i); + } } - } if (isDef(ret)) { (ret: any)._isVList = true } From f61911cfa84d7c6e8dc5680f6a0f010573852eb4 Mon Sep 17 00:00:00 2001 From: lyh2668 Date: Sun, 3 Dec 2017 00:40:16 +0800 Subject: [PATCH 2/6] Update render-list.js --- src/core/instance/render-helpers/render-list.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/instance/render-helpers/render-list.js b/src/core/instance/render-helpers/render-list.js index e410adc28f3..5058afa1ae6 100644 --- a/src/core/instance/render-helpers/render-list.js +++ b/src/core/instance/render-helpers/render-list.js @@ -46,6 +46,7 @@ export function renderList ( ret[i] = render(val[key], key, i); } } + } if (isDef(ret)) { (ret: any)._isVList = true } From 1eeba830cf86830fddc62dc1ca1fd24df8e5734f Mon Sep 17 00:00:00 2001 From: lyh2668 Date: Sun, 3 Dec 2017 00:44:22 +0800 Subject: [PATCH 3/6] Update render-list.js remove semicolon --- src/core/instance/render-helpers/render-list.js | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/instance/render-helpers/render-list.js b/src/core/instance/render-helpers/render-list.js index 5058afa1ae6..a1d8a6a9519 100644 --- a/src/core/instance/render-helpers/render-list.js +++ b/src/core/instance/render-helpers/render-list.js @@ -25,25 +25,25 @@ export function renderList ( ret[i] = render(i + 1, i) } } else if (isObject(val)) { - keys = Object.keys(val); + keys = Object.keys(val) if (keys.length === 0 && val.toString().indexOf('Iterator') > -1) { ret = new Array() - i = 0; + i = 0 while (true) { if (typeof val.next !== 'function') { - break; + break } var next = val.next() if (next.done) { - break; + break } - ret.push(render(next.value, i++)); + ret.push(render(next.value, i++)) } } else { - ret = new Array(keys.length); + ret = new Array(keys.length) for (i = 0, l = keys.length; i < l; i++) { - key = keys[i]; - ret[i] = render(val[key], key, i); + key = keys[i] + ret[i] = render(val[key], key, i) } } } From f2b1e77392eb8be17b25dff18984f0fcd884b949 Mon Sep 17 00:00:00 2001 From: lyh2668 Date: Sun, 3 Dec 2017 00:47:42 +0800 Subject: [PATCH 4/6] Update render-list.js fixed lint. The array literal notation [] is preferrable no-array-constructor --- src/core/instance/render-helpers/render-list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/instance/render-helpers/render-list.js b/src/core/instance/render-helpers/render-list.js index a1d8a6a9519..102b11eb3a1 100644 --- a/src/core/instance/render-helpers/render-list.js +++ b/src/core/instance/render-helpers/render-list.js @@ -27,7 +27,7 @@ export function renderList ( } else if (isObject(val)) { keys = Object.keys(val) if (keys.length === 0 && val.toString().indexOf('Iterator') > -1) { - ret = new Array() + ret = [] i = 0 while (true) { if (typeof val.next !== 'function') { From df8950ab59b93c94ff81101be813c992053bdeb8 Mon Sep 17 00:00:00 2001 From: lyh2668 Date: Sun, 3 Dec 2017 01:11:19 +0800 Subject: [PATCH 5/6] Update render-list.js MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit var to let 一开始是在编译后的文件修改的,不敢使用ES6+的语法,比如for of --- src/core/instance/render-helpers/render-list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/instance/render-helpers/render-list.js b/src/core/instance/render-helpers/render-list.js index 102b11eb3a1..fa9e9d32285 100644 --- a/src/core/instance/render-helpers/render-list.js +++ b/src/core/instance/render-helpers/render-list.js @@ -33,7 +33,7 @@ export function renderList ( if (typeof val.next !== 'function') { break } - var next = val.next() + let next = val.next() if (next.done) { break } From 6d84908c731ddc547781c0e43593d93312c08074 Mon Sep 17 00:00:00 2001 From: lyh2668 Date: Sun, 3 Dec 2017 01:15:22 +0800 Subject: [PATCH 6/6] Update render-list.js let to const --- src/core/instance/render-helpers/render-list.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/instance/render-helpers/render-list.js b/src/core/instance/render-helpers/render-list.js index fa9e9d32285..cdb9e86a03c 100644 --- a/src/core/instance/render-helpers/render-list.js +++ b/src/core/instance/render-helpers/render-list.js @@ -33,7 +33,7 @@ export function renderList ( if (typeof val.next !== 'function') { break } - let next = val.next() + const next = val.next() if (next.done) { break }