美文网首页微信小程序
小程序-进行动态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