javascript - vue2.0 中 给组件 bind 一个json应当如何处理。
高洛峰
高洛峰 2017-04-11 12:57:07
[JavaScript讨论组]

首先,在vue2.0中是推荐单向数据流的,点击这里查看, 那么在定义一些组件的时候可能会需要用到 json 传值,那么这个时候应该怎么处理?是放弃单向数据流还是利用Object的索引来进行修改

已使用方法

watch

在使用watch 时并不能准确的监听到 value 的第一次值变化

data.value = prop.value

定义一个局部变量,并用 prop 的值初始化它,但是会获取到prop的引用

最后贴上使用代码

detail.vue






form.vue





高洛峰
高洛峰

拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...

全部回复(2)
怪我咯

watch 加 immediate 属性是可以立即 watch 数据变化的。

单向数据流是 Vue 推荐的方式,但并不反对传 Object 以简化流程。

此外,http://vuejs.org/v2/guide/com... 按 v-model 的语法糖方式创建自定义输入组件也没多复杂,可以考虑使用。

天蓬老师

@KingMario

感谢

在下还有几个问题

  1. 在传值 value 的时候,想实现单向数据流, 于是我在watch中添加了对value的监听, 并且 deep,immediate 都设置为 true ,代码如下: 这样实现单向数据流正确吗

    watch: {
        value: {
            handler(value) {
                this.data = util.cloneObject(value);
            },
            deep: true,
            immediate: true
        }
    }
  2. 利用 v-modal 改变接受的 value 于是我又在 watch 中添加了对 data 的监听, 并且触发input 时间, 但是当值发生改变时发现程序陷入了死循环, 请问应当如何解决

    watch: {
        value: {
            handler(value) {
                this.data = util.cloneObject(value);
            },
            deep: true,
            immediate: true
        },
        data: {
            handler() {
                this.$emit('input', this.data);
            },
            deep: true
        }
    }

贴图代码运行示例
当只传入 value 时:

<staff-form :value="staffDialogData"></staff-form>

能够正确完成单向

当设置 v-modal 时却陷入了死循环

 <staff-form :value="staffDialogData" @input="staffDialogData = arguments[0]"></staff-form>

如有任何不正确的地方望指正

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号