我有两个组件 - 搜索过滤器和迭代器在同一个组件 App.vue 中:
App.vue
<v-text-field
:search="search"
v-model="search"
label="type here to filter"
>
</v-text-field>
<v-data-iterator
:items="sortedContents"
:search="search"
v-model="selected"
>
...
</v-data-iterator>
...
data () {
return {
search: '',
{
}
但后来我将搜索过滤器移动到一个名为 <toolbar>
的单独组件中,它内部的搜索过滤器不再起作用:
App.vue
<!-- this component contains the <v-text-field> -->
<toolbar :search="search"></toolbar>
<v-data-iterator
:items="sortedContents"
:search="search"
v-model="selected"
>
...
</v-data-iterator>
...
data () {
return {
search: '',
{
}
Codepen: https://codepen.io/anon/pen/ddEjgp?editors=1010
问题:
我应该在新的 <toolbar>
组件中添加什么,以便将输入该搜索过滤器的数据传递给 App.vue 父组件?
1 回答
您期望更改的
search
值可用于父组件,这是错误的 . 根据vue docs:您应该在工具栏的
v-text-field
(@input="onInput"
)中处理change
或input
(更适合您的任务)事件并发出一些事件(this.$emit('filterinput', str)
)以将数据弹出到父组件!并且父级应该监听(@filterinput="localSearchUpdate"
)该事件(在codepen中为filterinput
)并从事件字符串接收到的本地更改(方法localSearchUpdate
)search
数据:https://codepen.io/anon/pen/rJgqqv?editors=1010