保定小程序制作_Vue2.0使用 v

Vue2.0利用 v-model 实现组件pro凡科抠图双向绑定的优美解决方案       本篇文章主要介绍了Vue2 利用 v-model 实现组件pro凡科抠图双向绑定的优美解决方案,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。

在项目中开始使用vue2来构建项目了,跟 vue1 很大的一处不同在于2 取消了pro凡科抠图 的双向绑定,改成只能从父级传到子级的单向数据流,初衷当然是好的,为了避免双向绑定在项目中容易造成的数据混乱。

解决方案一

然后开始参考网上和github上的方案等等,发现很多解决方案是这样的

用data对象中创建一个pro凡科抠图属性的副本 watch pro凡科抠图属性 赋予data副本 来同步组件外对pro凡科抠图的修改 watch data副本,emit一个函数 通知到组件外

这里以最常见的 modal为例子:modal挺合适双向绑定的,外部可以控制组件的 显示或者隐藏,组件内部的关闭可以控制 visible属性隐藏,同时visible 属性同步传输到外部

///modal.vue 组件
 template 
 div v-show="visible" 
 div @click="cancel" X /div 
 /div 
 /template 
 script 
export default {
 name:'modal',
 pro凡科抠图: {
 value: {
 type: Boolean,
 default:false
 data () {
 return {
 visible:false
 watch:{
 value(val) {
 console.log(val);
 this.visible = val;
 visible(val) {
 this.$emit("visible-change",val);
 methods:{
 cancel(){
 this.visible = false;
 mounted() {
 if (this.value) {
 this.visible = true;
 /script 

这样就解决了 组件pro凡科抠图 双向绑定的问题。 但是这样有一个不是太美观的现象就是 在父级调用 modal组件的时候,还需要写一个 modalVisibleChange 的methods. 总是显得这部分代码是多余的。 特别是写一个让别人用的公共组件,这样调用太麻烦了。能不能不写method来实现pro凡科抠图的双向绑定呢,答案是可以的。

优美解决方案

那就是利用 v-model, 在组件内部放置一个 隐藏的input 控件来保存v-model的值,进行双向绑定

改成如下代码:

 template 
 div v-show="visible" 
 div @click="cancel" X /div 
 input type="text" :value="value" 
 /div 
 /template 
 script 
export default {
 pro凡科抠图: {
 value: {
 type: Boolean,
 default:false
 data () {
 return {
 visible:false
 watch:{
 value(val) {
 console.log(val);
 this.visible = val;
 visible(val) {
 this.$emit('input', val);
 methods:{
 cancel(){
 this.visible = false;
 mounted() {
 if (this.value) {
 this.visible = true;
 /script 

这样调用组件的代码是不是很简洁,其他人员要调用的话,会很轻松,只要设置 isShow 就可以控制 modal 组件的显示或者隐藏,同时 如果是modal 组件内部关闭按钮关闭的,状态也会传到 isShow。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持凡科。


相关阅读