vue.js select下拉框事件绑定不上

<select name="" id="" v-model="reportId">
    <option value="" v-if="reportData.length==0">&nbsp;没有更多了</option>
    <option value="" @click="reportPrice(item.id)" v-for="item in reportData" v-bind:value="item.id" v-html="'报表'+(parseInt($index)+1)"></option>
</select>

上面是模板

reportPrice(id){
    alert();
    let self = this;
    var url = Lib.api.project_reports_price;
    var params = {
        'access_token': USER.access_token,
        'reportId': id
    }
    var callback = (response)=>{
        if(response.code==200){
            self.price = response.price;
        }
    }
    Lib.run.ajax(url,'post',params,callback);
}

这个是绑定的事件,alert都不出来,请问是什么原因

阅读 14k
5 个回答

option是不能绑定事件的,若要绑定事件,在select上绑定change事件,每次option点击都会触发change事件,而selectvalue就是选中的optionvalue,可以用event.target取到这个值,用v-model也可以,但是v-model会忽略option的初始值

<select name="" id="" v-model="reportId" @change="reportPrice($event)">
    <option value="" v-if="reportData.length==0">&nbsp;没有更多了</option>
    <option :value="item.id" v-for="item in reportData"  v-html="'报表'+(parseInt($index)+1)"></option>
</select>

@click="reportPrice(item.id)" 这代码有问题吧,你绑定上下文试试

试试<option/>上绑DOM事件能否触发不就知道了

<option onclick="alert(1)">1</option>

答案是不能

<option @change="alert(1)">1</option>
try again ?

下拉框的option是不能绑定事件的吧,你要在select绑定事件啊,而且你那$index是没定义的吧,还有你那option上多余的value你可以删掉了。把事件绑定在select上,把reportId传进去:

    <select name="" id="" @change="reportPrice(reportId)" v-model="reportId">
                    <option v-if="reportData.length==0">&nbsp;没有更多了</option>
                    <option v-for="(item,index) in reportData" v-bind:value="item.id" v-html="'报表'+(parseInt(index)+1)"></option>
                </select>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏