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 字符串乘法
Aug 20 Javascript
JavaScript去除空格的三种方法(正则/传参函数/trim)
Feb 06 Javascript
点评js异步加载的4种方式
Dec 22 Javascript
Augularjs-起步详解
Jul 08 Javascript
AngularJS验证信息框架的封装插件用法【w5cValidator扩展插件】
Nov 03 Javascript
使用ionic(选项卡栏tab) icon(图标) ionic上拉菜单(ActionSheet) 实现通讯录界面切换实例代码
Oct 20 Javascript
node.js的exports、module.exports与ES6的export、export default深入详解
Oct 26 Javascript
简化vuex的状态管理方案的方法
Jun 02 Javascript
小程序实现发表评论功能
Jul 06 Javascript
微信小程序scroll-view实现滚动穿透和阻止滚动的方法
Aug 20 Javascript
Node.js中package.json中库的版本号(~和^)
Apr 02 Javascript
微信小程序开发技巧汇总
Jul 15 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
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
PHP5各个版本的新功能和新特性总结
2014/03/16 PHP
php设计模式之正面模式实例分析【星际争霸游戏案例】
2020/03/24 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
jquery 表单取值常用代码
2009/12/22 Javascript
functional继承模式 摘自javascript:the good parts
2011/06/20 Javascript
JS选项卡动态替换banner图片路径的方法
2015/05/11 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
JS导出PDF插件的方法(支持中文、图片使用路径)
2016/07/12 Javascript
JS获取url参数、主域名的方法实例分析
2016/08/03 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
vue防止花括号{{}}闪烁v-text和v-html、v-cloak用法示例
2019/03/13 Javascript
详解小程序BackgroundAudioManager踩坑之旅
2019/12/08 Javascript
Vue使用虚拟dom进行渲染view的方法
2019/12/26 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
[06:07]刀塔密之二:攻之吾命受之吾幸
2014/07/03 DOTA
Python 字典dict使用介绍
2014/11/30 Python
Python如何生成树形图案
2018/01/03 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
tensorflow 获取变量&amp;打印权值的实例讲解
2018/06/14 Python
python爬虫神器Pyppeteer入门及使用
2019/07/13 Python
浅析python 中大括号中括号小括号的区分
2019/07/29 Python
pytorch numpy list类型之间的相互转换实例
2019/08/18 Python
python 递归调用返回None的问题及解决方法
2020/03/16 Python
Python+unittest+requests+excel实现接口自动化测试框架
2020/12/23 Python
通过python-pptx模块操作ppt文件的方法
2020/12/26 Python
美国当红的名品折扣网:Gilt Groupe
2016/08/15 全球购物
Needle & Thread官网:英国仙女品牌
2018/01/13 全球购物
JustFab加拿大:女鞋、靴子、手袋和服装在线
2018/05/18 全球购物
自荐信如何制作?
2014/02/21 职场文书
会计工作决心书
2014/03/11 职场文书
网络文明传播志愿者活动方案
2014/08/20 职场文书
2015年少先队活动总结
2015/03/25 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
python如何在word中存储本地图片
2021/04/07 Python