8000 global api: add mixin method · BionicClick/vue@0d59333 · GitHub
[go: up one dir, main page]

Skip to content
Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 0d59333

Browse files
committed
global api: add mixin method
1 parent 5f55ecb commit 0d59333

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
@@ -93,6 +93,16 @@ exports.use = function (plugin) {
9393
return this
9494
}
9595

96+
/**
97+
* Apply a global mixin by merging it into the default
98+
* options.
99+
*/
100+
101+
exports.mixin = function (mixin) {
102+
var Vue = _.Vue
103+
Vue.options = _.mergeOptions(Vue.options, mixin)
104+
}
105+
96106
/**
97107
* Create asset registration methods with the following
98108
* 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)
0