jQuery - 在地图函数中替换

jQuery - replace in map function

我正在使用以下地图函数创建 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 值

 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("")));
    }

谁能告诉我问题出在哪里?

这个问题是因为replace() returns一个字符串,它不影响原来的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("")));
}