vue下的@change事件
楼主最近在项目中实践了一下vue,期间遇到了一些坑,现在记录一下
先上代码
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<script src="vue.js"></script>
<body><div id="app"><select name="" id="" @change="getCity(provinceId)" v-model="provinceId"><option value="">请选择</option><option v-for="province in provinces" :value="province.id">{{province.text}}</option></select><select name="" id=""><option value="">请选择</option><option :value="city.id" v-for="city in citys">{{city.text}}</option></select></div>
</body>
<script>new Vue({el:'#app',data:{provinces:[],provinceId:'',citys:[],areas:[]},created:function() {this.areas = [ {text:'广东省',id:1,pid:0}, {text:'上海市',id:2,pid:0},{text:'广州市',id:11,pid:1},{text:'中山市',id:12,pid:1}];var provinces=this.areas.filter(function (area) {return area.pid == 0;});this.provinces = provinces;},methods:{getCity:function (id) {var citys=this.areas.filter(function (city) {return city.pid == id;})this.citys = citys;}}})
</script>
</html>
如果按照平常的使用习惯,看起来好像没多大问题,切换父元素的时候监听change事件联动子元素值的变化,很符合常年使用jQuery开发的习惯,效果如图:
image.png
那如果页面上有多个使用到相同的联动效果的地方呢?我们看下效果会是怎样,如图
<select name="" id="" @change="getCity(provinceId)" v-model="provinceId"><option value="">请选择</option><option v-for="province in provinces" :value="province.id">{{province.text}}</option></select><select name="" id=""><option value="">请选择</option><option :value="city.id" v-for="city in citys">{{city.text}}</option></select><select name="" id="" @change="getCity(provinceId)" v-model="provinceId"><option value="">请选择</option><option v-for="province in provinces" :value="province.id">{{province.text}}</option></select><select name="" id=""><option value="">请选择</option><option :value="city.id" v-for="city in citys">{{city.text}}</option></select>
image.png
结果是互相受到影响,这并不是我们想看到的。
我的解决办法是,citys改为一个实时计算得到的数组而不是绑定现有仅有的同一个数组,代码改写如下:
<select name="" id=""><option value="">请选择</option><option :value="city.id" v-for="city in getCity(provinceId)">{{city.text}}</option></select>getCity:function (id) {var citys=this.areas.filter(function (city) {return city.pid == id;})return citys;}
效果如下:
image.png
可以看到,现在已经不会互相影响了。
总结:类似vue的mvvm框架都是数据与视图双向绑定的,而change事件往往用于视图改变的时候去操作数据,这在mvvm框架里面显得多此一举,框架本身已映射视图的变化到数据上,所以绝大部分的change事件监听都是不必要的,对应vue,可改写为methods方法或者computed计算属性。
vue下的@change事件相关推荐
- vue 事件调用 传参_对vue下点击事件传参和不传参的区别详解
如下所示: {{btn_text1}} {{btn_text2}} var _vm = new Vue({ data : { btn_text1 : '点击1' , btn_text2 : '点击2' ...
- click传值vue_对vue下点击事件传参和不传参的区别详解
如下所示: {{btn_text1}} {{btn_text2}} var _vm = new Vue({ data : { btn_text1 : '点击1' , btn_text2 : '点击2' ...
- Vue下 touchstart touchend 事件无效失效解决办法
Vue下 touchstart touchend 事件无效失效解决办法 <van-button:disabled="isLoading"plaintype="inf ...
- Vue的自定义@change事件(自己学习用途,不建议参考)
html dom事件 虽然我会用Vue会写一些组件和组件但是,有一些细节需要自己去扣,比如说我写项目的时候,遇到问题,那个change事件我就不是很清楚.我就去百度后面才发现,change事件是组件里 ...
- vue下拉框值改变事件_vue下的@change事件
楼主最近在项目中实践了一下vue,期间遇到了一些坑,现在记录一下 先上代码 Title 请选择 {{province.text}} 请选择 {{city.text}} new Vue({ el:'#a ...
- vue下拉框值改变事件_vue和element ui 下拉框select的change事件
1 在线编辑测试工具 编辑好代码后点击 run 即可 2 vue原生写法 2.1 html部分 新增 空 {{ drug.name }} 刪除 尚未新增任何資料 總金額:{{ totalMoney } ...
- vue下拉框值改变事件_下拉框的change事件
$(document).ready(function() { //绑定下拉框change事件,当下来框改变时调用 SelectChange()方法 $("#selectID").c ...
- vue、Dropdown 下拉菜单、Dropdown属性事件、vue Dropdown 全部下拉菜单、vue Dropdown 全部属性事件
vue.Dropdown 下拉菜单.Dropdown属性事件.vue Dropdown 全部下拉菜单.vue Dropdown 全部属性事件 设计规则 何时使用 代码演示 1.基本 2.右键菜单 3. ...
- vue:添加enter事件,键盘敲下enter事件
vue项目中遇到点击查询按钮可以查出数据,点击回车键也能查出数据,所以就想点击回车键时调用查询方法. 示例代码如下: 一.第一步: 给input按钮绑定@keyup.enter:如果是要对页面的but ...
最新文章
- Spring Boot @ConfigurationProperties使用指导
- 三容水箱液位控制系统_三容水箱液位控制系统的建模及仿真.doc
- skimage 学习笔记
- .NET 分布式自增Id组件(解决自动分配机器Id、时间回拨问题)
- window下配置SSH连接GitHub、GitHub配置ssh key
- linux系统调用记录模块实验报告,华科操作系统实验报告(DOC)
- 第0章 Oracle的安装及相关配置
- Mac下关于ssh命令的简化
- 【网络编程】同步、异步、阻塞和非阻塞
- 714 买卖股票的最佳时机含手续费(状态机dp)
- IOS UIKit基础控件的使用
- idea报错 No valid Maven installation found.maven不能用
- 姿态估计1-10:FSA-Net(头部姿态估算)-源码无死角讲解(5)-Feature aggregation
- 三步必杀(高阶差分系列)
- labview精华资料集合光盘
- java中输出日历_Java打印日历表
- Kalibr安装教程
- ICPC Latin American Regional – 2017 B题(模拟+思维)
- python finance函数_Finance-Python · PyPI
- i3 12100f和i5 10400f哪个好
热门文章
- 最新Elasticsearch8.4.3 + Kibana8.4.3在云服务器Centos7.9安装部署(参考官方文档)
- [洛谷]P1413 坚果保龄球 (#贪心 -1.18)
- H.S.Teoh为D的垃集辩护.与Ola的反驳.
- unity3d培训_005
- 圖譜謎宮(2019年6月28日於鄂爾多斯)
- 12位早起的IT大佬们让小伙伴们都惊呆了
- android用服务建立悬浮窗,Android悬浮窗用法总结
- SOLIDWORKS中如何使用配置创建系列零件
- 后台架构设计—数据存储层
- java开发的颠覆者epub,创业颠覆者-陈景畑 翟顺[6寸pdf mobi epub kindle版].pdf