diff --git a/src/compiler/compile.js b/src/compiler/compile.js index 953f2ccbb4c..109141c6d9a 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 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] = [] + priorities.push(priority) } array.push(dir) } - var index = 0 - var priorities = Object.keys(groupedMap).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,