【问题标题】:Using @click in select options - Vue.js 2在选择选项中使用 @click - Vue.js 2
【发布时间】:2018-02-25 20:31:13
【问题描述】:

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

到目前为止我有:

<button @click="sortBy('name')">sort by name</button>
<button @click="sortBy('price')">sort by price</button>

它可以工作,但是当我将它插入选项标签时,它停止工作。

<select name="sortBy" id="sortBy">
  <option value="sort">sort By</option>
  <option @click="sortBy('name')">name</option>
  <option @click="sortBy('price')">price</option>
</select>

我的功能:

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

【问题讨论】:

    标签: javascript vuejs2


    【解决方案1】:

    &lt;option&gt;不能绑定事件,需要使用&lt;select&gt;change事件,一旦点击选项,就会调用select的change事件回调:

    <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' }
           ]
        }
    })
    

    一旦你更改了一个选项,sortTyoe 的值就会被更改为它,@change 将调用回调 sortBy(sortType)

    【讨论】:

    • 非常感谢!还有一个问题:是否可以在每个选择选项上使用不同的功能?
    • 不能直接使用不同的函数,因为浏览器只支持绑定DOM事件到select,不支持option
    猜你喜欢
    • 2017-10-05
    • 2017-06-29
    • 1970-01-01
    • 2017-06-28
    • 2017-05-30
    • 1970-01-01
    • 1970-01-01
    • 2019-07-01
    • 2019-01-14
    相关资源
    最近更新 更多