在选择选项中使用@click-Vue.js 2

Nat*_*lia 1 javascript vuejs2

我想在选择选项中使用@click。

到目前为止,我有:

<button @click="sortBy('name')">sort by name</button>
<button @click="sortBy('price')">sort by price</button>
Run Code Online (Sandbox Code Playgroud)

并且可以正常工作,但是当我将其插入选项标签时,它停止工作了。

<select name="sortBy" id="sortBy">
  <option value="sort">sort By</option>
  <option @click="sortBy('name')">name</option>
  <option @click="sortBy('price')">price</option>
</select>
Run Code Online (Sandbox Code Playgroud)

我的功能:

sortBy(sortKey) {
    this.items.sort((a, b) =>
    (typeof a[sortKey] === 'string' || typeof b[sortKey] === 'string') ? 
    a[sortKey].localeCompare(b[sortKey]) : a[sortKey] - b[sortKey]);
}
Run Code Online (Sandbox Code Playgroud)

Jia*_*ong 5

您无法将event绑定到<option>,并且需要使用的changeevent <select>,一旦单击一个选项,select就会调用的change event回调:

<select name="sortBy" id="sortBy" @change="sortBy(sortType)" v-model="sortType">
   <option v-for="item in sortOptions" :value="item.value">{{item.text}}</option>
</select>

new Vue({
    el: '...',
    data: {
       sortType: 'sort',
       sortOptions: [
          { text: 'sort by', value: 'sort' },
          { text: 'name', value: 'name' },
          { text: 'price', value: 'price' }
       ]
    }
})
Run Code Online (Sandbox Code Playgroud)

更改选项后,的值sortTyoe将被更改为它,@change将调用callback sortBy(sortType)