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 ajax return没有返回值的解决方法
Oct 20 Javascript
javascript使用smipleChart实现简单图表
Jan 02 Javascript
使用jQuery UI库开发Web界面的简单入门指引
Apr 22 Javascript
jQuery为动态生成的select元素添加事件的方法
Aug 29 Javascript
JS实现禁止高频率连续点击的方法【基于ES6语法】
Apr 25 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
Jun 12 jQuery
react实现换肤功能的示例代码
Aug 14 Javascript
详解vue使用$http服务端收不到参数
Apr 19 Javascript
express如何解决ajax跨域访问session失效问题详解
Jun 20 Javascript
mpvue微信小程序开发之实现一个弹幕评论
Nov 24 Javascript
带你彻底理解JavaScript中的原型对象
Apr 14 Javascript
React如何创建组件
Jun 27 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 新手入门教程
2009/08/03 PHP
php过滤HTML标签、属性等正则表达式汇总
2014/09/22 PHP
PHP实现简单数字分页效果
2015/07/26 PHP
YII2框架中actions的作用与使用方法示例
2020/03/13 PHP
JavaScript 和 Java 的区别浅析
2013/07/31 Javascript
jquery选择器排除某个DOM元素的方法(实例演示)
2014/04/25 Javascript
jQuery下拉美化搜索表单效果代码分享
2015/08/25 Javascript
js替换字符串中所有指定的字符(实现代码)
2016/08/17 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
JS禁止查看网页源代码的实现方法
2016/10/12 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
js之切换全屏和退出全屏实现代码实例
2019/09/09 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
[01:31](回顾)杀出重围,决战TI之巅
2014/07/01 DOTA
[47:36]Optic vs Newbee 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
[01:44]Ti10举办地公布
2019/08/25 DOTA
python中迭代器(iterator)用法实例分析
2015/04/29 Python
python列表操作之extend和append的区别实例分析
2015/07/28 Python
Python中easy_install 和 pip 的安装及使用
2017/06/05 Python
Django admin美化插件suit使用示例
2017/12/12 Python
学习Python需要哪些工具
2020/09/04 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
使用HTML5捕捉音频与视频信息概述及实例
2018/08/22 HTML / CSS
京东港澳售:京东直邮港澳台
2018/01/31 全球购物
澳大利亚排名第一的狂热牛仔品牌:ONETEASPOON
2018/11/20 全球购物
abstract是什么意思
2012/02/12 面试题
农民入党思想汇报
2014/01/03 职场文书
中式面点餐厅创业计划书
2014/01/29 职场文书
班班通项目实施方案
2014/02/25 职场文书
一岗双责责任书
2014/04/15 职场文书
区政府领导班子个人对照检查材料
2014/09/25 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
学生违反校规检讨书
2014/10/28 职场文书
在校证明模板
2015/06/17 职场文书
Nginx开启Brotli压缩算法实现过程详解
2021/03/31 Servers
Python自动操作神器PyAutoGUI的使用教程
2022/06/16 Python