【问题标题】:Filter by models sub field按模型子字段过滤
【发布时间】:2025-11-29 19:20:04
【问题描述】:

我需要通过模型子字段过滤 Backgrid。我有来自服务器的下一个 JSON 字符串:

[{"iduser":
    {"iduser":1224,"apellido":"Agostini","nombre":"Juan Ignacio","dni":47121281}
  },
  {"iduser":
     {"iduser":1225,"apellido":"Alvarez","nombre":"Pedro","dni":4712312}
  }]

所以,我在下一个自定义 StringCell 渲染中显示用户全名:

{name: 'fullname', label: 'Nombre completo', cell: Backgrid.StringCell.extend({
        render: function(){
            var user = this.model.get('iduser');
            var fullname = user.apellido + ", " + user.nombre;
            this.$el.html(fullname);
            return this;
        }
}), editable: false, sortable: true}

现在,我尝试按“全名”设置过滤器,但不起作用。有什么想法吗?

【问题讨论】:

    标签: backgrid


    【解决方案1】:

    因为默认情况下,每个 Backgrid 列名称对应于一个实际的模型属性名称,并且排序将根据每个模型中该属性的值进行排序。在您的情况下,您没有名为“fullname”的模型属性,但您可以通过定义 sortValue 列属性来近似它。

    var columns = [{
      name: "fullname",
      label: "Nombre completo",
      cell: MyStringCell,
      editable: false,
      sortable: true,
      sortValue: function (model, colName) {
        var user = model.get("iduser");
        return user.apellido + ', ' + user.nombre;
      }
    }]
    

    【讨论】:

    • sortValue 用于排序。过滤是指使用过滤器扩展进行搜索吗?