收藏
回答

setData时key为数组元素属性时,元素的index只能识别0-9?

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug setData 客户端 Android 6.6.6 2.0.9



如上图,key为数组元素单个属性时,元素的index难道只能识别0-9纯数字?伪代码如下:

index=fun(); //比如此时index为点击某item回传的位置

setData({

   'array[index].message' : ''  

})

这样会报“APP-SERVICE-Engine:Only number 0-9 could inside [ ]……”的错误……


这中常规需求居然不行吗?那setData真的谈不上“非常灵活”啊……只设置0-9的纯数字这个只有过家家写demo的时候才会这样做吧?真实项目中一般都是需要动态设置某个index对应元素的属性啊……难道非得要设置整个列表数据吗?然而你们的setData太多的时候也容易有性能问题啊……


跪求官方大哥或者其它大哥解答,十分感谢 :)

最后一次编辑于  2018-05-27
回答关注问题邀请回答
收藏

1 个回答

  • HS
    HS
    2018-05-27

    试下这种 ES6 语法呢:


    this.setData({

      [`array[${index}].message`] : 'your data here...',

    })



    2018-05-27
    有用 3
    回复 2
    • 鸿 昊
      鸿 昊
      2018-05-27

      在家睡醒刚看到回复,试了一下,官方大哥果然牛逼,It works !

      不过还想请教一下官方大哥一些本质原因,为啥单个属性不用加引号,路径引用需要引号,然后这种情况下需要加方括号……或者可以扔给我一个关键词让我自己去找资料学,刚搜了一下没搜到什么有用的信息……

      非常感谢官方大哥的帮助 :)

      2018-05-27
      回复
    • HS
      HS
      2018-05-28回复鸿 昊

      setData 的时候 key 名虽然可以写成 something[index].message 的形式,但是引用不了 index 这个参数的,需要显式地写为 something[0].message 或 something[1].message。


      这里的语法可参考 ES6 模版字符串:

      https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/template_strings


      对象初始化:

      https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Object_initializer

      2018-05-28
      2
      回复
登录 后发表内容