【发布时间】:2017-09-29 16:44:58
【问题描述】:
我正在尝试创建一个有两个插槽的组件。第二个插槽根据第一个插槽中的项目数重复。我已经使用作用域插槽实现了这一点,但是,当数据在第一个插槽上更新时,第二个插槽不会自动更新它,直到触发事件,例如:单击调用方法的按钮。
有没有办法让第二个插槽在第一个插槽上的数据发生更改时更新其视图?
这是我的例子:
Jsfiddle:https://jsfiddle.net/89vykm75/1/
new Vue({
el: '#app',
components: {
'repeat-for-each-item': {
data: function() {
return {
items: []
}
},
template: `<div>
<slot name="item" v-for="item in items" :item="item"></slot>
<button @click="addItem()">Add item</button>
<slot name="repeat" v-for="item in items" :item="item"></slot>
</div>
`,
methods: {
addItem() {
this.items.push({});
}
}
}
}
});
<div id="app">
<repeat-for-each-item>
<template slot="item" scope="props">
<div>
<input type="text" v-model="props.item.name">
</div>
</template>
<template slot="repeat" scope="props">
<div>
<label>
<span v-if="props.item.name">{{props.item.name}}:</span>
<span v-else>No Name:</span>
</label>
<input type="text">
</div>
</template>
</repeat-for-each-item>
</div>
【问题讨论】:
标签: javascript vue.js vuejs2