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 相关文章推荐
jQuery 过滤not()与filter()实例代码
May 10 Javascript
JSON+HTML实现国家省市联动选择效果
May 18 Javascript
jQuery中Ajax的get、post等方法详解
Jan 20 Javascript
JavaScript中的Math.atan2()方法使用详解
Jun 15 Javascript
Js与Jq获取浏览器和对象值的方法
Mar 18 Javascript
微信小程序 wxapp内容组件 icon详细介绍
Oct 31 Javascript
20行js代码实现的贪吃蛇小游戏
Jun 20 Javascript
详解Angular 自定义结构指令
Jun 21 Javascript
在vue中使用css modules替代scroped的方法
Mar 10 Javascript
jQuery 选择器用法基础入门示例
Jan 04 jQuery
浅析Vue 中的 render 函数
Feb 28 Javascript
vue-cli打包后本地运行dist文件中的index.html操作
Aug 12 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
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
php计算程序运行时间的简单例子分享
2014/05/10 PHP
destoon供应信息title调用出公司名称的方法
2014/08/22 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
Javascript 陷阱 window全局对象
2008/11/26 Javascript
解决ExtJS在chrome或火狐中正常显示在ie中不显示的浏览器兼容问题
2013/01/11 Javascript
js对象的复制继承实例
2015/01/10 Javascript
ECMAScript6新增值比较函数Object.is
2015/06/12 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
完美解决IE不支持Data.parse()的问题
2016/11/24 Javascript
浅谈Vue网络请求之interceptors实际应用
2018/02/28 Javascript
Three.js实现3D机房效果
2018/12/30 Javascript
小程序实现录音上传功能
2019/11/22 Javascript
[49:59]KG vs Mineski 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
使用python提取html文件中的特定数据的实现代码
2013/03/24 Python
Python实现简单拆分PDF文件的方法
2015/07/30 Python
Python的Flask站点中集成xhEditor文本编辑器的教程
2016/06/13 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
Python 处理日期时间的Arrow库使用
2020/08/18 Python
英国最大的电子零件及配件零售商:Partmaster
2017/04/24 全球购物
荷兰多品牌网上鞋店:Stoute Schoenen
2017/08/24 全球购物
澳大利亚自然和有机的健康美容产品一站式商店:Ziani Beauty
2017/12/28 全球购物
医学生职业规划范文
2014/01/05 职场文书
计算机大学生职业生涯规划书范文
2014/02/19 职场文书
财产公证书样本
2014/04/04 职场文书
《生命的药方》教学反思
2014/04/08 职场文书
入职担保书怎么写
2014/05/12 职场文书
植物生产学专业求职信
2014/08/08 职场文书
科级干部群众路线教育实践活动个人对照检查材料
2014/09/19 职场文书
幼儿园大班教育随笔
2015/08/14 职场文书
MySQL infobright的安装步骤
2021/04/07 MySQL
python之PySide2安装使用及QT Designer UI设计案例教程
2021/07/26 Python
centos8安装nginx1.9.1的详细过程
2021/08/02 Servers
Java生成日期时间存入Mysql数据库的实现方法
2022/03/03 Java/Android
使用CSS自定义属性实现骨架屏效果
2022/06/21 HTML / CSS