如何更改Backgrid Uri Cell href属性

时间:2014-06-12 11:56:53

标签: ruby-on-rails-3 backbone.js backgrid

我正在使用Backgrid以及rails,我的要求是在backgrid单元格选项中更改href属性,我有以下代码

    var grid = new Backgrid.Grid({

     columns: [ {
      name: "location",
      cell: Backgrid.UriCell.extend({

      }),
      sortable: true,
      editable: false
     }]
    })

上面的代码显示了hyrperlink,将href属性作为“location-name”,如下所示

  <a tabindex="-1" href="location-name" title="location-name" target="_blank">location-name</a>

,但我需要href属性如下

  <a tabindex="-1" href="#some-id" title="location-name" target="_blank">location-name</a>

我该怎么做,请帮帮我

2 个答案:

答案 0 :(得分:0)

查看文档(backgrid.js的第994行),rawValue直接取自列名,而不是任何可以传入的选项。

  render: function () {
    this.$el.empty();
    var rawValue = this.model.get(this.column.get("name"));
    var formattedValue = this.formatter.fromRaw(rawValue, this.model);
    this.$el.append($("<a>", {
      tabIndex: -1,
      href: rawValue,
      title: this.title || formattedValue,
      target: this.target
    }).text(formattedValue));
    this.delegateEvents();
    return this;
  }

那么你可以用你自己的覆盖渲染吗?

cell: Backgrid.UriCell.extend({
 render: function () {
    this.$el.empty();
    var rawValue = //what ever you want to put in the href;
    var formattedValue = this.formatter.fromRaw(rawValue, this.model);
    this.$el.append($("<a>", {
      tabIndex: -1,
      href: rawValue,
      title: this.title || formattedValue,
      target: this.target
    }).text(formattedValue));
    this.delegateEvents();
    return this;
  }
}),

答案 1 :(得分:0)

如果您签入文档,则可以看到formattedValue正在更改文本。因此,您应该更改格式化的值以更改链接的名称。有关详细信息,请参阅http://backgridjs.com/ref/formatter.html上的uriFormatter。