Angularjs ui-网格过滤复合表达式
Angularjs ui-grid filter complex expression
如何过滤像 "brand.title" 这样的复杂表达式映射。这是我的文件初始化:
$scope.gridOptions2.columnDefs = [
{ field: 'code', displayName: "Code" },
{ field: 'brand.title', displayName: "Brand", resizable: true },
];
过滤器:
$scope.singleFilter = function(renderableRows) {
var matcher = new RegExp($scope.selectedBrand);
renderableRows.forEach(function(row) {
var match = false;
['code', 'brand.title' ].forEach(function(field) {
if (row.entity[field].match(matcher)) {
match = true;
}
});
if (!match) {
row.visible = false;
}
});
return renderableRows;
};
代码字段上的过滤工作正常,但 brand.title 给出以下错误:
TypeError: 无法读取未定义的 属性 'match'
备选方案是:
$scope.gridOptions2 = {
columnDefs : [
{ field: 'code', displayName: "Code", enableFiltering: true },
{ field: 'brand.title', displayName: "Brand", resizable: true, enableFiltering: true, filter: {
term : $scope.term }}
],
onRegisterApi : function(gridApi) {
$scope.gridApi = gridApi;
}
};
$scope.singleFilter = function() {
$scope.gridApi.grid.columns[2].filter.term = $scope.term;
};
如何过滤像 "brand.title" 这样的复杂表达式映射。这是我的文件初始化:
$scope.gridOptions2.columnDefs = [
{ field: 'code', displayName: "Code" },
{ field: 'brand.title', displayName: "Brand", resizable: true },
];
过滤器:
$scope.singleFilter = function(renderableRows) {
var matcher = new RegExp($scope.selectedBrand);
renderableRows.forEach(function(row) {
var match = false;
['code', 'brand.title' ].forEach(function(field) {
if (row.entity[field].match(matcher)) {
match = true;
}
});
if (!match) {
row.visible = false;
}
});
return renderableRows;
};
代码字段上的过滤工作正常,但 brand.title 给出以下错误: TypeError: 无法读取未定义的 属性 'match'
备选方案是:
$scope.gridOptions2 = {
columnDefs : [
{ field: 'code', displayName: "Code", enableFiltering: true },
{ field: 'brand.title', displayName: "Brand", resizable: true, enableFiltering: true, filter: {
term : $scope.term }}
],
onRegisterApi : function(gridApi) {
$scope.gridApi = gridApi;
}
};
$scope.singleFilter = function() {
$scope.gridApi.grid.columns[2].filter.term = $scope.term;
};