Skip to content

Commit 6a28ce8

Browse files
committed
global api: add mixin method
1 parent 81b499b commit 6a28ce8

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

src/api/global.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,16 @@ exports.use = function (plugin) {
100100
return this
101101
}
102102

103+
/**
104+
* Apply a global mixin by merging it into the default
105+
* options.
106+
*/
107+
108+
exports.mixin = function (mixin) {
109+
var Vue = _.Vue
110+
Vue.options = _.mergeOptions(Vue.options, mixin)
111+
}
112+
103113
/**
104114
* Create asset registration methods with the following
105115
* signature:

test/unit/specs/api/global_spec.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,21 @@ describe('Global API', function () {
5757
delete Vue.options.directives['plugin-test']
5858
})
5959

60+
it('global mixin', function () {
61+
var options = Vue.options
62+
var spy = jasmine.createSpy('global mixin')
63+
Vue.mixin({
64+
created: function () {
65+
spy(this.$options.myOption)
66+
}
67+
})
68+
new Vue({
69+
myOption: 'hello'
70+
})
71+
expect(spy).toHaveBeenCalledWith('hello')
72+
Vue.options = options
73+
})
74+
6075
describe('Asset registration', function () {
6176

6277
var Test = Vue.extend()

0 commit comments

Comments
 (0)