V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
m939594960
V2EX  ›  问与答

vue 遇到这样的情况该怎么处理

  •  
  •   m939594960 · 2016-10-25 09:12:40 +08:00 · 3071 次点击
    这是一个创建于 2950 天前的主题,其中的信息可能已经有所发展或是发生改变。

    一个接口会返回一个列表的 json

    我 foreach 渲染列表 但是列表里面有几个字段是在 json 中不存在的,但是我还要操作,修改值。

    这种情况应该怎么处理?

    下面是我现在的做法,总处理的感觉不是很好。

    Alt text

    isShowMore 这字段就是列表中没有返回的值

    我把他在 data 中声明为一个空数组

    ( this.$set(this.isShowMore,idx ,true) 我直接这么写是不行的。因为 isShowMore 数组现在是个空数组。)

    Alt text

    然后在执行修改 isShowMore 的时候把少的数组数量填回来

    9 条回复    2016-10-25 16:03:07 +08:00
    kikyous
        1
    kikyous  
       2016-10-25 09:17:47 +08:00   ❤️ 1
    Computed Properties ?
    m939594960
        2
    m939594960  
    OP
       2016-10-25 09:31:28 +08:00
    @kikyous 看了一下手册,感觉不是很符合我的需求,用户如果做了对某个元素的操作 我还要对列表中某一个单个的元素的 isShowMore 的值进行修改 。不过还是很感谢。。
    fundon
        3
    fundon  
       2016-10-25 09:35:22 +08:00   ❤️ 1
    姿势不对,去看 vue 的数组操作。
    m939594960
        4
    m939594960  
    OP
       2016-10-25 09:37:39 +08:00
    @fundon 具体哪个地方不对呢? isShowMore 这个变量是 ajax 返回中没带的字段所以我要用这么坑爹的办法
    vghdjgh
        5
    vghdjgh  
       2016-10-25 10:10:08 +08:00   ❤️ 1
    从接口获得数据后,把缺少的字段补成 null 再传给 vue ;或者,修改接口,把缺少的字段补上。
    lygmqkl
        6
    lygmqkl  
       2016-10-25 10:10:32 +08:00   ❤️ 1
    不是应该拿到 resource list 的时候,直接 for() 一下进行 清洗和 format ?然后中途有需要动态的值就 computed. 上面的代码没太看懂。
    m939594960
        7
    m939594960  
    OP
       2016-10-25 10:15:53 +08:00
    @vghdjgh
    @lygmqkl
    大概懂了,谢谢你们,可能是我的思路有问题,应该在取数据的时候就把数据处理好 该加的字段,该处理的字段都 for 好。
    ijse
        8
    ijse  
       2016-10-25 10:16:04 +08:00
    把 viewModel 跟 dataModel 区分开
    cnZary
        9
    cnZary  
       2016-10-25 16:03:07 +08:00
    按了老半天想把那个“译”弄掉,才发现是张图
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2304 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 16:02 · PVG 00:02 · LAX 08:02 · JFK 11:02
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.