美文网首页微信小程序
小程序-进行动态setData

小程序-进行动态setData

作者: 书此奇谭 | 来源:发表于2018-04-02 17:46 被阅读73次

    我们知道,如果小程序data有一个列表如list,对其中某一项进行赋值,语法如下:

    this.setData({

        'list.itemName': something...//ps:之前写成'list[itemName]'也是可以的,可前两天试了下发现不行,只好修改此处

    })

    如果是在一个循环里依次对每一项进行赋值,该怎么写呢?

    我相信一定有人这样写:

    this.setData({

        'list[i]':something...

    })

    然后就报错了,提示什么"必须为0-9"等等

    这里你需要引入一个es6语法:反撇号`。关于此语法我会放在最后简要解释。

    由此,setData的格式就变成了:

    this.setData({

        [`list[${i}]`]:something...

    })

    编译通过!

    然而我并没太弄懂小程序关于这个的内部机制……有木有人跟我来说一下……

    es6:反撇号`

    模版字符串。除了使用反撇号字符 ` 代替普通字符串的引号 ' 或 " 外,它们看起来与普通字符串并无二致。它为JavaScript提供了简单的字符串插值功能

    示例:

    function authorize(user, action) {

     if (!user.hasPrivilege(action)) {

       throw new Error(

         `用户 ${user.name} 未被授权执行${action} 操作。`);

     }

    }

    在这个示例中,${user.name}和${action}被称为模板占位符,JavaScript将把user.name和action的值插入到最终生成的字符串中。这算是比+ 运算符更优雅的语法。

    模板占位符中的代码可以是任意JavaScript表达式,所以函数调用、算数运算等这些都可以作为占位符使用,你甚至可以在一个模板字符串中嵌套另一个,我称之为模板套构(template inception)。

    如果这两个值都不是字符串,可以按照常规将其转换为字符串。例如:如果action是一个对象,将会调用它的.toString()方法将其转换为字符串值。

    如果你需要在模板字符串中书写反撇号,你必须使用反斜杠将其转义:`\``等价于"`"。

    同样地,如果你需要在模板字符串中引入字符$和{。无论你要实现什么样的目标,你都需要用反斜杠转义每一个字符:`\$`和`\{`。

    模板字符串可以多行书写. 模板字符串中所有的空格、新行、缩进,都会原样输出在生成的字符串中。

    相关文章

      网友评论

        本文标题:小程序-进行动态setData

        本文链接:https://www.haomeiwen.com/subject/ospxhftx.html