从单元格模板中搜索文本不能在ui-grid中工作

问题描述 投票:1回答:2

我为其中一个列定义了条件单元格模板。它正确显示数据,但我无法在单元格模板中搜索文本。这是我的傻瓜:https://plnkr.co/edit/TDX5jtPord1hkzCVaw3L?p=preview

var template1 = '<div class="">' + 
'<div class="" ng-if="COL_FIELD > 30">Greater </div> ' +
'<div class="" ng-if="COL_FIELD < 30"> Lesser </div> ' +
'</div>';

在模板中,我已经把条件设置为..如果COL_FIELD> 30然后写出更大的..或者写下更小的。现在我应该能够搜索Number中的Greater或Lesser。

enter image description here

angularjs angular-ui-grid celltemplate
2个回答
2
投票

解决方案可能是在您的数据上添加属性,如:

$http.get('data.json').success(function(data) {
    data.map(function(item) {
        item.greaterLesser = item.amount > 30 ? 'Greater' : 'Lesser';
    });
    $scope.gridOptions.data = data;
});

然后,不要使用带有模板的金额,只需绑定此属性即可。

$scope.gridOptions = {
    enableFiltering: true,
    columnDefs: [{
      field: 'name',
      width: 70
    }, {
      field: 'greaterLesser',
      name: 'Number',
      width: 90,
    }, {
      field: 'amount',
      name: 'Currency',
      cellFilter: 'currencyFilter:this',
    }]
};

这是updated plunker

编辑

如果要使用模板,可以自己实现搜索功能。您可以将filter选项添加到您的字段并实现condition函数。就像是:

filter: {
    condition: function(searchTerm, cellValue) {
        var value = cellValue > 30 ? 'greater' : 'lesser';
        var result = value.search(searchTerm.toLowerCase());
        return result > -1;
    }
}

这里我使用了search函数,但你可以使用match或其他一些函数。这是一个demo plunker


0
投票

我使用以下代码进行搜索工作

field: 'EmpId', 
displayName: 'Employee Type', 
cellTemplate: '<div style="cursor:pointer"  class="ui-grid-cell-contents">{{grid.appScope.GetEmployeeType(row)}}</div>', 
filter: {
            condition: function (searchTerm, cellValue,row,column) {
            var value = $scope.GetEmployeeType(row);//same function that you use to display value in cell Template
            return (value.toLocaleLowerCase().indexOf(searchTerm.toLocaleLowerCase())>-1);
                            }
                        }
© www.soinside.com 2019 - 2024. All rights reserved.