From 23d1e0fe53df2c514c656f902aea557979368b73 Mon Sep 17 00:00:00 2001 From: defcc Date: Mon, 26 Sep 2016 22:07:28 +0800 Subject: [PATCH 1/2] fix directive sort compare --- src/compiler/compile.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/compiler/compile.js b/src/compiler/compile.js index 953f2ccbb4c..5661528e751 100644 --- a/src/compiler/compile.js +++ b/src/compiler/compile.js @@ -122,18 +122,20 @@ function sortDirectives (dirs) { var groupedMap = {} var i, j, k, l + var keys = [] for (i = 0, j = dirs.length; i < j; i++) { var dir = dirs[i] var priority = dir.descriptor.def.priority || DEFAULT_PRIORITY var array = groupedMap[priority] if (!array) { array = groupedMap[priority] = [] + keys.push(priority) } array.push(dir) } var index = 0 - var priorities = Object.keys(groupedMap).sort(function (a, b) { + var priorities = keys.sort(function (a, b) { return a > b ? -1 : a === b ? 0 : 1 }) for (i = 0, j = priorities.length; i < j; i++) { From 8f6df28779abcdf41f34f1268ae026a92dd058ac Mon Sep 17 00:00:00 2001 From: defcc Date: Tue, 27 Sep 2016 20:04:46 +0800 Subject: [PATCH 2/2] fix directive sort compare. and update normal directives test case. --- src/compiler/compile.js | 8 ++++---- test/unit/specs/compiler/compile_spec.js | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/compiler/compile.js b/src/compiler/compile.js index 5661528e751..109141c6d9a 100644 --- a/src/compiler/compile.js +++ b/src/compiler/compile.js @@ -122,20 +122,20 @@ function sortDirectives (dirs) { var groupedMap = {} var i, j, k, l - var keys = [] + var index = 0 + var priorities = [] for (i = 0, j = dirs.length; i < j; i++) { var dir = dirs[i] var priority = dir.descriptor.def.priority || DEFAULT_PRIORITY var array = groupedMap[priority] if (!array) { array = groupedMap[priority] = [] - keys.push(priority) + priorities.push(priority) } array.push(dir) } - var index = 0 - var priorities = keys.sort(function (a, b) { + priorities.sort(function (a, b) { return a > b ? -1 : a === b ? 0 : 1 }) for (i = 0, j = priorities.length; i < j; i++) { diff --git a/test/unit/specs/compiler/compile_spec.js b/test/unit/specs/compiler/compile_spec.js index fb8a934e4ab..f1cab5f9e57 100644 --- a/test/unit/specs/compiler/compile_spec.js +++ b/test/unit/specs/compiler/compile_spec.js @@ -53,8 +53,8 @@ describe('Compile', function () { it('normal directives', function () { el.setAttribute('v-a', 'b') el.innerHTML = '

hello

' - var defA = { priority: 1 } - var defB = { priority: 2 } + var defA = { priority: 250 } + var defB = { priority: 1100 } var options = _.mergeOptions(Vue.options, { directives: { a: defA,