我正在使用以下地图功能来创建HTML
createHtml: function (data) {
var values = data.map(function(val) {
return this.li.replace("{{TEXT}}", val.name);
},{li:this.values });
this.$ele.html(this.lis.replace("{{NAME}}","cd-view").replace("
{{ITEMS}}", values.join("")));
}
通过在我的HTML上显示用户名可以很好地工作,但是当我将上面的代码修改为以下代码以向这些用户名添加id属性时,我的html将id属性呈现为{{ID}}而不是1或任何id值< / p>
createHtml: function (data) {
var values = data.map(function(val) {
**this.li.replace("{{ID}}", item.id);** -- added newly
return this.li.replace("{{USER}}", val.name);
},{li:this.values });
this.$ele.html(this.lis.replace("{{NAME}}","cd-view").replace("
{{ITEMS}}", values.join("")));
}
有人可以指出问题所在吗?
答案 0 :(得分:1)
问题是因为replace()
返回一个字符串,它不影响原始的this.li
值。
要解决此问题,您需要调用replace()
来更改{{ID}}
并存储结果。然后,您可以再次针对此结果调用replace()
来更改{{USER}}
,如下所示:
createHtml: function(data) {
var values = data.map(function(val) {
var str = this.li.replace("{{ID}}", item.id);
return str.replace("{{USER}}", val.name);
}, {
li: this.values
});
this.$ele.html(this.lis.replace("{{NAME}}", "cd-view").replace("{{ITEMS}}", values.join("")));
}