这个 Buefy (Vue + Bulma) 函数在这里做什么?
What is this Buefy (Vue + Bulma) function doing here?
我是 Buefy 的新手,也是 Vue 的新手。表单上的 Buefy 文档有一个示例自动完成 here,它引用了数据字段上的计算 属性。我认为该函数正在输入名称,然后相应地过滤数据数组。
我不太确定的是它实际工作的机制,即为什么有两个 return 语句,'options' 来自哪里,为什么小写方法在那里.. .
<template>
<section>
<p class="content"><b>Selected:</b> {{ selected }}</p>
<b-field label="Find a JS framework">
<b-autocomplete
rounded
v-model="name"
:data="filteredDataArray"
placeholder="e.g. jQuery"
icon="magnify"
clearable
@select="option => selected = option">
<template slot="empty">No results found</template>
</b-autocomplete>
</b-field>
</section>
</template>
<script>
export default {
data() {
return {
data: [
'Angular',
'Angular 2',
'Aurelia',
'Backbone',
'Ember',
'jQuery',
'Meteor',
'Node.js',
'Polymer',
'React',
'RxJS',
'Vue.js'
],
name: '',
selected: null
}
},
computed: {
filteredDataArray() {
return this.data.filter((option) => {
return option
.toString()
.toLowerCase()
.indexOf(this.name.toLowerCase()) >= 0
})
}
}
}
</script>
这是一个 ES6 问题,因此为了理解答案,您需要理解 .filter()
。 DOCS
发生的事情是 JS 中的基本函数式编程。我建议你读一读。
所以this.data
是一个数组而.filter()
是一个
遍历数组项的 JS 方法,returns 匹配选项。
所以基本上 .filter()
return 是匹配值的数组,然后第二个 return 是 return 从过滤器 return 中得到的数组 到调用函数(filteredDataArray()
)的地方。
我是 Buefy 的新手,也是 Vue 的新手。表单上的 Buefy 文档有一个示例自动完成 here,它引用了数据字段上的计算 属性。我认为该函数正在输入名称,然后相应地过滤数据数组。
我不太确定的是它实际工作的机制,即为什么有两个 return 语句,'options' 来自哪里,为什么小写方法在那里.. .
<template>
<section>
<p class="content"><b>Selected:</b> {{ selected }}</p>
<b-field label="Find a JS framework">
<b-autocomplete
rounded
v-model="name"
:data="filteredDataArray"
placeholder="e.g. jQuery"
icon="magnify"
clearable
@select="option => selected = option">
<template slot="empty">No results found</template>
</b-autocomplete>
</b-field>
</section>
</template>
<script>
export default {
data() {
return {
data: [
'Angular',
'Angular 2',
'Aurelia',
'Backbone',
'Ember',
'jQuery',
'Meteor',
'Node.js',
'Polymer',
'React',
'RxJS',
'Vue.js'
],
name: '',
selected: null
}
},
computed: {
filteredDataArray() {
return this.data.filter((option) => {
return option
.toString()
.toLowerCase()
.indexOf(this.name.toLowerCase()) >= 0
})
}
}
}
</script>
这是一个 ES6 问题,因此为了理解答案,您需要理解 .filter()
。 DOCS
发生的事情是 JS 中的基本函数式编程。我建议你读一读。
所以this.data
是一个数组而.filter()
是一个
遍历数组项的 JS 方法,returns 匹配选项。
所以基本上 .filter()
return 是匹配值的数组,然后第二个 return 是 return 从过滤器 return 中得到的数组 到调用函数(filteredDataArray()
)的地方。