我正在使用mixin添加和覆盖vue数据。我能够添加新数据,但我似乎无法覆盖现有数据。这是简单的代码:
var mixin = {
data: function() {
return {
foo: 'boo',
test: 'blah'
}
}
}
var vm = new Vue({
el: '#vue-instance',
mixins: [mixin],
data: function() {
return {
foo: 'bar'
}
}
});
当我运行它时,'test'正确地等于'blah',但'foo'仍然等于'bar'。除了添加新数据之外,还有mixin覆盖现有的vue数据吗?
这是一个小提琴:
答案 0 :(得分:0)
解决此问题的一种方法是在mixin中创建一个方法并从模板中调用该方法:
<强> HTML:强>
<div id="vue-instance">
<p>
{{getFoo()}}
</p>
<p>
{{test}}
</p>
</div>
<强> JavaScript的:强>
var mixin = {
data: function() {
return {
foo: 'baz',
test: 'blah'
}
},
methods: {
getFoo: function () {
return 'baz';
}
}
}
var vm = new Vue({
el: '#vue-instance',
mixins: [mixin],
data: function() {
return {
foo: 'bar'
}
}
});
答案 1 :(得分:0)
答案 2 :(得分:0)
正如一些人所提到的,mixins无法覆盖现有数据。为此,我不得不采取我原来的组件,并使其成为&#34;基地&#34;零件。然后使用&#34; extends&#34;另一个组件中的选项可覆盖现有数据。