vue.js 1.x与2.0中js实时监听input值的变化


Posted in Javascript onMarch 15, 2017

一、vuejs 2.0中js实时监听input

在2.0的版本中,vuejs把v-el 和 v-ref 合并为一个 ref 属性了,可以在组件实例中通过 $refs 来调用。这意味着 v-el:my-element 将写成这样: ref="myElement" v-ref:my-component 变成了这样: ref="myComponent" 。绑定在一般元素上时,ref 指DOM元素,绑定在组件上时,ref 为一组件实例。

因为 v-ref 不再是一个指令了而是一个特殊的属性,它也可以被动态定义了。这样在和v-for 结合的时候是很有用的:

<p v-for="item in items" v-bind:ref="'item' + item.id"></p>

以前 v-el/v-ref 和 v-for 一起使用将产生一个DOM数组或者组件数组,因为没法给每个元素一个特定名字。现在你还仍然可以这样做,给每个元素一个同样的ref:

<p v-for="item in items" ref="items"></p>

和 1.x 中不同, $refs 不是响应的,因为它们在渲染过程中注册/更新。只有监听变化并重复渲染才能使它们响应。另一方面,设计$refs主要是提供给 js 程序访问的,并不建议在模板中过度依赖使用它。因为这意味着在实例之外去访问实例状态,违背了 Vue 数据驱动的思想。

下面给一个vuejs2.0版本的例子:

<div id="example">
 <input type="text" v-model="items.type1" ref="type1"/>
 <input type="text" v-model="items.type2" ref="type2"/>
 <div class="show">输入框一的内容:{{items.type1}}</div>
 <div class="show">输入框二的内容:{{items.type2}}</div>
</div>
<script>
 var example1 = new Vue({
  el: '#example',
  data: {
  items: {
   type1:'第一个输入框',
   type2:'第二个输入框'
  }
  },
  ready:function(){
   
  },
  watch:{
   items:{
    handler:function(val,oldval){
     console.log(this.$refs.type1.value);
     console.log(this.$refs.type2.value);
    },
    deep:true
   }
  },
  methods:{
  
  }
 })
</script>

结果如图所示:

vue.js 1.x与2.0中js实时监听input值的变化

当在输入框输入文字的时候,js可以实时监听其指定输入框文本的值。

二、vuejs 1.x中js实时监听input

那么在vuejs 1.x的版本中是如何在js中监听某个指定的input的value变化的呢?

通过如下方式:

<input type="text" v-model="items.type1" v-el:texttype1/>

然后在vuejs中的watch中监听:

watch:{
 items:{
  handler:function(val,oldval){
   console.log(this.$els.texttype1.value);
  },
  deep:true
 }
}

整体代码:

<div id="example">
 <input type="text" v-model="items.type1" v-el:texttype1/>
 <input type="text" v-model="items.type2" v-el:texttype2/>
 <div class="show">输入框一的内容:{{items.type1}}</div>
 <div class="show">输入框二的内容:{{items.type2}}</div>
</div>
<script>
 var example1 = new Vue({
  el: '#example',
  data: {
  items: {
   type1:'第一个输入框',
   type2:'第二个输入框'
  }
  },
  ready:function(){
   
  },
  watch:{
   items:{
    handler:function(val,oldval){
     console.log(this.$els.texttype1.value);
    },
    deep:true
   }
  },
  methods:{
  
  }
 })
</script>

实现的效果如图所示:

vue.js 1.x与2.0中js实时监听input值的变化

当在输入框中输入文字时,js中实时监听其变化的值。

总结

好了,以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
ExtJS4如何自动生成控制grid的列显示、隐藏的checkbox
May 02 Javascript
关闭页面window.location事件未执行的原因及解决方法
Sep 01 Javascript
jQuery学习笔记之Ajax用法实例详解
Dec 01 Javascript
JQuery EasyUI的使用
Feb 24 Javascript
jquery trigger实现联动的方法
Feb 29 Javascript
一分钟理解js闭包
May 04 Javascript
JS中from 表单序列化提交的代码
Jan 20 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
Feb 28 Javascript
linux 后台运行node服务指令方法
May 23 Javascript
vue实现的组件兄弟间通信功能示例
Dec 04 Javascript
js 将多个对象合并成一个对象 assign方法的实现
Sep 24 Javascript
深入浅析React中diff算法
May 19 Javascript
js仿淘宝商品放大预览功能
Mar 15 #Javascript
利用Plupload.js解决大文件上传问题, 带进度条和背景遮罩层
Mar 15 #Javascript
javascript九宫格图片随机打乱位置的实现方法
Mar 15 #Javascript
JavaScript实现审核流程状态的动态显示进度条
Mar 15 #Javascript
js实现自定义进度条效果
Mar 15 #Javascript
yii form 表单提交之前JS在提交按钮的验证方法
Mar 15 #Javascript
jQuery模拟窗口抖动效果
Mar 15 #Javascript
You might like
解析php多线程下载远程多个文件
2013/06/25 PHP
php常用字符函数实例小结
2016/12/29 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
JS支持带x身份证号码验证函数
2008/08/10 Javascript
Jquery+WebService 校验账号是否已被注册的代码
2010/07/12 Javascript
js实现的跟随鼠标移动的时钟效果(中英文日期显示)
2011/01/17 Javascript
jQuery数组处理方法汇总
2011/06/20 Javascript
使用C++为node.js写扩展模块
2015/04/22 Javascript
jQuery匹配文档链接并添加class的方法
2015/06/26 Javascript
你不知道的高性能JAVASCRIPT
2016/01/18 Javascript
解决vue中使用Axios调用接口时出现的ie数据处理问题
2018/08/13 Javascript
解决vuecli3.0热更新失效的问题
2018/09/19 Javascript
使用Angular Cli如何创建Angular私有库详解
2019/01/30 Javascript
Vue Router history模式的配置方法及其原理
2019/05/30 Javascript
Vue 中可以定义组件模版的几种方式
2019/08/06 Javascript
Javascript模拟实现new原理解析
2020/03/03 Javascript
React中使用Vditor自定义图片详解
2020/12/25 Javascript
python的正则表达式re模块的常用方法
2013/03/09 Python
用pywin32实现windows模拟鼠标及键盘动作
2014/04/22 Python
Python的面向对象编程方式学习笔记
2016/07/12 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
Python 获取div标签中的文字实例
2018/12/20 Python
python实现网站微信登录的示例代码
2019/09/18 Python
使用Python制作一个打字训练小工具
2019/10/01 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
HTML中meta标签及Keywords
2020/04/15 HTML / CSS
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
Jacques Lemans德国:奥地利钟表品牌
2019/12/26 全球购物
九月份红领巾广播稿
2014/01/22 职场文书
研究生毕业鉴定
2014/01/29 职场文书
项目经理聘任书
2014/03/29 职场文书
学习保证书
2015/01/17 职场文书
2015年小班保育员工作总结
2015/05/27 职场文书
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python
Python加密技术之RSA加密解密的实现
2022/04/08 Python
分享几个实用的CSS代码块
2022/06/10 HTML / CSS