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 相关文章推荐
javascript 模拟JQuery的Ready方法实现并出现的问题
Dec 06 Javascript
JS 屏蔽键盘不可用与鼠标右键不可用的方法
Nov 18 Javascript
比较不错的JS/JQuery显示或隐藏文本的方法
Feb 13 Javascript
form.submit()不能提交表单的原因分析
Oct 23 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
jQuery实现HTML表格单元格的合并功能
Apr 06 Javascript
angularjs实现简单的购物车功能
Sep 21 Javascript
微信小程序form表单组件示例代码
Jul 15 Javascript
Vue 处理表单input单行文本框的实例代码
May 09 Javascript
vue项目前端知识点整理【收藏】
May 13 Javascript
小程序实现短信登录倒计时
Jul 12 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
Mar 25 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
PHP版自动生成文章摘要
2008/07/23 PHP
php中HTTP_REFERER函数用法实例
2014/11/21 PHP
PHP输出多个元素的排列或组合的方法
2017/03/14 PHP
php实现数组重复数字统计实例
2018/09/30 PHP
javascript实现playfair和hill密码算法
2014/12/07 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
JavaScript中循环遍历Array与Map的方法小结
2016/03/12 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
AngularJS基础 ng-keydown 指令简单示例
2016/08/02 Javascript
微信js-sdk上传与下载图片接口用法示例
2016/10/12 Javascript
javascript iframe跨域详解
2016/10/26 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
2016/12/13 Javascript
jQuery日程管理插件fullcalendar使用详解
2017/01/07 Javascript
Kotlin学习第一步 kotlin语法特性
2017/05/25 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
layui table 多行删除(id获取)的方法
2019/09/12 Javascript
原生javascript中this几种常见用法总结
2020/02/24 Javascript
使用Vant完成DatetimePicker 日期的选择器操作
2020/11/12 Javascript
Python中使用socket发送HTTP请求数据接收不完整问题解决方法
2015/02/04 Python
基于python实现的抓取腾讯视频所有电影的爬虫
2016/04/22 Python
Python 实现文件打包、上传与校验的方法
2019/02/13 Python
python分数表示方式和写法
2019/06/26 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
详解pandas数据合并与重塑(pd.concat篇)
2019/07/09 Python
flask框架渲染Jinja模板与传入模板变量操作详解
2020/01/25 Python
Pandas实现一列数据分隔为两列
2020/05/18 Python
Pandora西班牙官方商店:PandoraShop.es
2020/10/05 全球购物
为什么要用EJB
2014/04/17 面试题
学院书画协会部门职责
2013/11/28 职场文书
党员廉洁自律承诺书
2014/05/26 职场文书
青奥会口号
2014/06/12 职场文书
小学生竞选班干部演讲稿(5篇)
2014/09/12 职场文书
党的群众路线领导班子整改方案
2014/09/27 职场文书
钱学森电影观后感
2015/06/04 职场文书
初级职称评定工作总结
2015/08/13 职场文书
简历自我评价:教师师德表现自我评价
2019/04/24 职场文书