jQuery-替换地图功能

时间:2018-12-05 22:26:14

标签: javascript jquery html replace 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值< / 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("")));
    }

有人可以指出问题所在吗?

1 个答案:

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