小程序-进行动态setData

我们知道,如果小程序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()方法将其转换为字符串值。

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

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


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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,288评论 19 139
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,539评论 0 5
  • FreeMarker的模板文件并不比HTML页面复杂多少,FreeMarker模板文件主要由如下4个部分组成: 1...
    年轻小伙程序员阅读 3,106评论 0 5
  • 从被摘下的那一刻起就不能改变的是用凋零来诠释爱情的命运正如我初见你的一瞬就注定的离你而去
    胡三多阅读 156评论 0 0
  • *问题:调用的方法找不到会怎么办?如 People *people = [[Book alloc]init]; [...
    陈贺年阅读 770评论 5 3