VUE JS 使用组件实现双向绑定的示例代码


Posted in Javascript onJanuary 10, 2017

1.VUE 前端简单介绍

VUE JS是一个简洁的双向数据绑定框架,他的性能超过ANGULARJS,原因是实现的机制和ANGULARJS 不同,他在初始化时对数据增加了get和set方法,在数据set时,在数据属性上添加监控,这样数据发生改变时,就会触发他上面的watcher,而ANGULARJS 是使用脏数据检查来实现的。

另外VUEJS 入门比ANGULARJS 简单,中文文档也很齐全。

2.组件实现

在使用vue开发过程中,我们会需要扩展一些组件,在表单中使用,比如一个用户选择器。

在VUEJS 封装时,可以使用组件和指令。

在VUEJS中有V-MODEL 这个感觉和ANGULARJS 类似,实际完全不同,没有ANGULARJS 复杂,他没有象ANGULARJS的 ng-model 的viewtomodel和modeltoview特性,而且这个v-model 只能在input checkbox select 等控件上进行使用,而 angularjs 可以 扩展 ngmodel实现他的render方法。。

另外我在使用 VUE指令时,实现双向绑定,这个我研究了自定义指定的写法,可能还是不太熟悉的原因,还没有实现。

我改用组件来实现:

Vue.component('inputText', {
      props: {
        'input':{
         required: true
      },pname: {
        required: true
      }},
      template: '<div><input type="text" v-model.lazy="input[pname]"><button @click="init" >选择</button></div>',
      data: function () { 
        return {
         myModel: "ray"
        }
      },
      
      methods: {
       init:function () {
         var rtn=prompt("输入数据!", "");
         this.input[this.pname]=rtn;
        }
      }
     })

在vue实现组件时,他使用的是单向数据流,在这里我们使用 对象来实现双向绑定。

在上面的代码中,有两个属性 :

input,pname 其中input 是一个数据对象实例,pname: 只是一个字符串。

模版代码:

<script type="x-template" id="myTemplate">
    <div >
      <table border="1" width="400">
         <tr>
           <td>name</td>
           <td>
             <input-text :input="person" pname="name"></input-text>
           </td>
         </tr>
         <tr>
           <td>age</td>
           <td>
             <input v-model="person.age">
           </td>
         </tr>
         
       </table>
       <table border="1" width="400">
         <tr>
           <td colspan="3">
             <a href="#" @click="addRow('items')" class="btn btn-primary">添加</a>
           </td>
         </tr>
         
         <tr v-for="(item, index) in person.items">
           <td >
             <input-text :input="item" pname="school"></input-text>
           </td>
           <td >
             <input-text :input="item" pname="year"></input-text>
           </td>
           <td >
             <a @click="removeRow('items',index)" >删除</a>
           </td>
         </tr>
         
       
       </table>
   {{person}}
    </div>
  </script>
<inputtext :input="item" pname="school"></inputtext>

<inputtext :input="person" pname="name"></inputtext>

组件使用代码,这里绑定了 item,person 数据,pname 为绑定字段。

JS实现代码:

var app8 = new Vue({
     template:"#myTemplate",
     data:{
       person:{name:"",age:0,
        items:[] 
       }
     }
     ,
     methods: {
       addRow: function (name) {
        this.person[name].push({school:"",year:""})
       },
       removeRow:function(name,i){
         this.person[name].splice(i,1) ;
       }
      }
     
    })
    app8.$mount('#app8')

这里我们实现了 子表的数据添加和删除。

界面效果:

VUE JS 使用组件实现双向绑定的示例代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
JSP中使用JavaScript动态插入删除输入框实现代码
Jun 13 Javascript
js数组常见操作及数组与字符串相互转化实例详解
Nov 10 Javascript
jQuery手动点击实现图片轮播特效
Apr 20 Javascript
Jquery表单验证失败后不提交的解决方法
Oct 18 Javascript
详解VueJs前后端分离跨域问题
May 24 Javascript
webpack开发跨域问题解决办法
Aug 03 Javascript
JS基于正则表达式实现的密码强度验证功能示例
Sep 21 Javascript
node中IO以及定时器优先级详解
May 10 Javascript
JSX在render函数中的应用详解
Sep 04 Javascript
vue-router结合vuex实现用户权限控制功能
Nov 14 Javascript
Vue data的数据响应式到底是如何实现的
Feb 11 Javascript
antd中table展开行默认展示,且不需要前边的加号操作
Nov 02 Javascript
微信小程序 地图map详解及简单实例
Jan 10 #Javascript
jQuery操作复选框(CheckBox)的取值赋值实现代码
Jan 10 #Javascript
jQuery UI仿淘宝搜索下拉列表功能
Jan 10 #Javascript
jquery 正整数数字校验正则表达式
Jan 10 #Javascript
Angular的$http的ajax的请求操作(推荐)
Jan 10 #Javascript
JS遍历对象属性的方法示例
Jan 10 #Javascript
浅谈Angular.js中使用$watch监听模型变化
Jan 10 #Javascript
You might like
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
php计算2个日期的差值函数分享
2015/02/02 PHP
PHP中的闭包(匿名函数)浅析
2015/02/07 PHP
PHP随机生成信用卡卡号的方法
2015/03/23 PHP
用Jquery实现可编辑表格并用AJAX提交到服务器修改数据
2009/12/27 Javascript
javascript实现的在当前窗口中漂浮框的代码
2010/03/15 Javascript
Tab页界面 用jQuery及Ajax技术实现(php后台)
2011/10/12 Javascript
Jquery实现简单的轮播效果(代码管用)
2016/03/14 Javascript
文件上传的几个示例分享【推荐】
2016/12/16 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
[16:43]Heroes19_剃刀(完美)
2014/10/31 DOTA
利用Python获取操作系统信息实例
2016/09/02 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python基础教程之异常详解
2019/01/10 Python
Python多进程fork()函数详解
2019/02/22 Python
django如何通过类视图使用装饰器
2019/07/24 Python
Python 私有化操作实例分析
2019/11/21 Python
numpy的Fancy Indexing和array比较详解
2020/06/11 Python
使用HTML5做个画图板的方法介绍
2013/05/03 HTML / CSS
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
Lyle & Scott苏格兰金鹰官网:英国皇室御用品牌
2018/05/09 全球购物
Lancer Skincare官方网站:抗衰老皮肤护理
2020/11/20 全球购物
J2EE面试题集锦(附答案)
2013/08/16 面试题
大学生毕业鉴定
2014/01/31 职场文书
小学教师师德感言
2014/02/10 职场文书
运输服务质量承诺书
2014/03/27 职场文书
入党积极分子批评与自我批评思想汇报
2014/09/14 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
离婚承诺书格式范文
2015/05/04 职场文书
医院保洁员管理制度
2015/08/05 职场文书
2016党员三严三实心得体会
2016/01/15 职场文书
2016道德模范先进事迹材料
2016/02/26 职场文书
详解Python自动化之文件自动化处理
2021/06/21 Python
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android