ui 网格分组自定义单元格模板中的动态 angular 过滤器
dynamic angular filter in ui-grid grouped custom cell template
我需要一个包含多个值的单元格 table。我为 ui-grid 选项、单元格的自定义模板和几行 css 构建了一个结构。它有效并允许我决定值是否必须保持在同一行或多行中。
自定义模板:
var template =
'<div class="ui-grid-cell-contents crm-group">'+
'<div class="crm-group-row" ng-repeat="rowFields in col.colDef.fields">' +
'<div class="crm-group-col" ng-repeat="colField in rowFields" ng-if="row.entity[colField.name]">' +
'<span class="title" ng-if="colField.descr">'+
'{{colField.descr}}: '+
'</span>' +
'<span class="content">'+
//"{{row.entity[colField.name] }}"+ //without filter
"{{row.entity[colField.name] | colField.cellFilter}}"+ //<-- HERE doesn't work
'</span>' +
'</div>'+
'</div>' +
'</div>';
选项结构:
{ field: 'group',
name: 'Group',
width: '**',
fields : [
[
{
name: "age",
descr: "Num",
cellFilter : "floatToFixed:'2'",
},
{
name: "email",
descr: "Email",
},
],
],
cellTemplate: template
},
现在我需要对每个值应用一个可能不同的过滤器。所以我把它设置在字段结构上。在这种情况下,我想将自定义过滤器应用于第一个字段值。
过滤器:
app.filter('floatToFixed', function () {
return function (input, number) {
console.log(input);
console.log(number);
if (!input)
return null;
if (!number)
return input;
else
return parseFloat(input).toFixed(parseInt(number));
}
});
但是没用。 Here 笨蛋。
感谢帮助。
首先,管道 |
后的格式不正确 - 过滤器的名称不能包含点,你可以做的是使用一个从字符串应用过滤器的过滤器,这就是我的解决方案可以从我的头顶冒出来:
http://plnkr.co/edit/by8vQBgeau0823akwQvu?p=preview
.filter('applyFilter', function($filter) {
return function(input, filter) {
var filterToApply = filter !== undefined ? filter.split(':') : undefined;
return filterToApply === undefined ? input : $filter(filterToApply[0])(input, parseInt(filterToApply[1], 10))
}
})
然后在 html
"{{row.entity[colField.name] | applyFilter:colField.cellFilter}}"
我需要一个包含多个值的单元格 table。我为 ui-grid 选项、单元格的自定义模板和几行 css 构建了一个结构。它有效并允许我决定值是否必须保持在同一行或多行中。
自定义模板:
var template =
'<div class="ui-grid-cell-contents crm-group">'+
'<div class="crm-group-row" ng-repeat="rowFields in col.colDef.fields">' +
'<div class="crm-group-col" ng-repeat="colField in rowFields" ng-if="row.entity[colField.name]">' +
'<span class="title" ng-if="colField.descr">'+
'{{colField.descr}}: '+
'</span>' +
'<span class="content">'+
//"{{row.entity[colField.name] }}"+ //without filter
"{{row.entity[colField.name] | colField.cellFilter}}"+ //<-- HERE doesn't work
'</span>' +
'</div>'+
'</div>' +
'</div>';
选项结构:
{ field: 'group',
name: 'Group',
width: '**',
fields : [
[
{
name: "age",
descr: "Num",
cellFilter : "floatToFixed:'2'",
},
{
name: "email",
descr: "Email",
},
],
],
cellTemplate: template
},
现在我需要对每个值应用一个可能不同的过滤器。所以我把它设置在字段结构上。在这种情况下,我想将自定义过滤器应用于第一个字段值。
过滤器:
app.filter('floatToFixed', function () {
return function (input, number) {
console.log(input);
console.log(number);
if (!input)
return null;
if (!number)
return input;
else
return parseFloat(input).toFixed(parseInt(number));
}
});
但是没用。 Here 笨蛋。
感谢帮助。
首先,管道 |
后的格式不正确 - 过滤器的名称不能包含点,你可以做的是使用一个从字符串应用过滤器的过滤器,这就是我的解决方案可以从我的头顶冒出来:
http://plnkr.co/edit/by8vQBgeau0823akwQvu?p=preview
.filter('applyFilter', function($filter) {
return function(input, filter) {
var filterToApply = filter !== undefined ? filter.split(':') : undefined;
return filterToApply === undefined ? input : $filter(filterToApply[0])(input, parseInt(filterToApply[1], 10))
}
})
然后在 html
"{{row.entity[colField.name] | applyFilter:colField.cellFilter}}"