温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在VUE 中利用组件实现双向绑定

发布时间:2021-04-09 17:12:31 来源:亿速云 阅读:224 作者:Leah 栏目:web开发

怎么在VUE 中利用组件实现双向绑定?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

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 中利用组件实现双向绑定的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注亿速云行业资讯频道,感谢各位的阅读!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

vue
AI