如何在当前Vue实例上添加方法或数据
How to add methods or data on current Vue instance?
我刚开始使用Vue.js,我正在摆弄它。是否有一种方法可以创建可重用的方法和数据?
这是我想要实现的非常简单的代码:
page1.html
<div id="app">
<button type="button" v-on="click: foo()">Foo</button>
<button type="button" v-on="click: bar()">Bar</button>
</div>
<script src="reusable.js"></script>
<script src="page1.js"></script> <-- Custom script -->
page2.html
<div id="app">
<button type="button" v-on="click: foo()">Foo</button>
<button type="button" v-on="click: baz()">Baz</button>
</div>
<script src="reusable.js"></script>
<script src="page2.js"></script> <-- Custom script -->
reusable.js
var vm = new Vue({
el: '#app',
data: {
name: 'John'
},
methods: {
foo: function(){
console.log('foo');
}
}
});
现在我想访问我的可重用的.js的VM上的数据或添加方法,所以我可以访问它在我的page1.js或page2.js。我不知道怎么做,但我想实现这样的东西:
page1.js
// adds a new method on my reusable.js's vm
vm.extend({
methods: {
bar: function(){
// triggers when I click the bar button
console.log('bar');
console.log(this.name); // John
}
}
});
page2.js
// adds a new method on my reusable.js's vm
vm.extend({
methods: {
baz: function(){
// triggers when I click the baz button
console.log('baz');
console.log(this.name); // John
}
}
});
我知道vm.extend
是错误的(我只是给你们一个我想要实现的想法)。
你有什么建议吗?
也许你可以使用mixins?就像这样:
var mix = {
methods : {
bar : function() {
console.log('bar')
}
}
};
var demo = new Vue({
el: '#demo',
mixins : [mix],
methods : {
foo: function() {
console.log('foo')
}
}
});
演示:http://jsfiddle.net/dewey92/yMv7y/965/
来源:http://vuejs.org/guide/extending.html
所以在你的例子中:
Page1.html:
<div id="app">
<button type="button" v-on="click: foo()">Foo</button>
<button type="button" v-on="click: bar()">Bar</button>
</div>
<script src="page1.js"></script> <-- Custom script (or page2.js) -->
<script src="reusable.js"></script>
page1.js:
var mix = {
methods : {
bar : function() {
console.log('bar')
}
}
};
page2.js:
var mix = {
methods : {
baz : function() {
console.log('baz')
}
}
};
reusable.js:
var vm = new Vue({
el: '#app',
mixins: [mix],
data: {
name: 'John'
}
methods: {
foo: function(){
console.log('foo');
}
}
});
相关文章:
- 在对象中添加方法时出现问题
- 什么意思是“;向原型添加方法”;
- jQuery验证器添加方法未定义
- 向通过ReST JSON调用生成的Angular Javascript对象添加方法
- 向React中的高阶组件添加方法
- 向JavaScript对象添加方法
- 如何向[]添加方法
- 如何在流星js中为对象添加方法
- jQuery.validation 在生日年龄验证中添加方法错误
- 使用 IE8 添加方法的 JavaScript 错误
- 向方法添加方法
- 如何在 Javascript ES6 中向类添加方法
- Javascript:向对象类添加方法的优缺点是什么
- 如何更改“动物”的原型并添加方法“sayName”来打印语句
- 如何在 Illustrator CS5.1+ 中创建画板对象的添加方法所需的矩形对象
- 如何在 nodejs 中全局添加方法到 JSON、Date 或其他“本机”对象
- 什么类/类型是未定义的,是否可以向其扩展/添加方法
- 为什么在 javascript 中向数组原型添加方法会破坏 for 循环上的迭代
- 向对象添加方法
- 动态添加方法到对象