多平台统一管理软件接口,如何实现多平台统一管理软件接口
236
2023-06-03
Vue2.0利用 v
在项目中开始使用vue2来构建项目了,跟 vue1 很大的一处不同在于2 取消了props 的双向绑定,改成只能从父级传到子级的单向数据流,初衷当然是http://好的,为了避免双向绑定在项目中容易造成的数据混乱。
解决方案一
然后开始参考网上和github上的方案等等,发现很多解决方案是这样的
用data对象中创建一个props属性的副本
watch props属性 赋予data副本 来同步组件外对prophttp://s的修改
watch data副本,emit一个函数 通知到组件外
这里以最常见的 modal为例子:modal挺合适双向绑定的,外部可以控制组件的 显示或者隐藏,组件内部的关闭可以控制 visible属性隐藏,同时visible 属性同步传输到外部
///modal.vue 组件
export default {
name:'modal',
props: {
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;
}
}
}
///调用modal组件
export default {
name: 'app',
data () {
return {
isShow:true,
}
},
methods:{
modalVisibleChange(val){
this.isShow = val;
}
}
}
这样就解决了 组件props 双向绑定的问题。 但是这样有一个不是太美观的现象就是 在父级调用 modal组件的时候,还需要写一个 modalVisibleChange 的methods. 总是显得这部分代码是多余的。 特别是写一个让别人用的公共组件,这样调用太麻烦了。能不能不写method来实现props的双向绑定呢,答案是可以的。
优美解决方案
那就是利用 v-model, 在组件内部放置一个 隐藏的input 控件来保存v-model的值,进行双向绑定
改成如下代码:
export default {
props: {
value: {
type: Boolean,
default:false
}
},
dataLUcGy () {
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;
}
}
}
///调用modal组件
export default {
name: 'app',
data () {
return {
isShow:false
}
}
}
这样调用组件的代码是不是很简洁,其他人员要调用的话,会很轻松,只要设置 isShow 就可以控制 modal 组件的显示或者隐藏,同时 如果是modal 组件内部关闭按钮关闭的,状态也会传到 isShow。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~