如何在 Slickgrid 自定义单元格格式化程序中应用自定义过滤器格式化程序
How to apply custom Fliter formatter in a Slick grid custom cell formatter
如何在 slick-grid 自定义单元格格式化程序中应用自定义 angular 过滤器格式化程序
假设我有一个 angular 客户过滤器格式化程序,可以将日期从一种格式转换为另一种格式。
var dateFilter = this.$filter('myDateFilterFormatter')('2006-04-07');
它 returns 作为 4/7/06。
如何在 slick-grid 自定义单元格格式化程序中使用 myDateFilterFormatter
我试过这种方法
this.dateFommatter = function(row, cell, value, columnDef, dataContext){
return "<p>"+ value | myDateFilterFormatter +"</p>";
};
并尝试
this.dateFommatter = function(row, cell, value, columnDef, dataContext){
return "<p>"+ this.$filter('myDateFilterFormatter')(value) +"</p>";
};
两种方式都以错误结束。我无法在 slick-grid 行格式化程序中应用自定义过滤器。你能建议我如何在 slick-grid 中使用自定义过滤器吗?
dateFormatter
函数里面的this
指的是函数本身。
通常使用
var self = this;
... code ...
this.dateFommatter = function(row, cell, value, columnDef, dataContext){
return "<p>"+ self.$filter('myDateFilterFormatter')(value) +"</p>";
};
为了回答您的第二个查询,调用格式化程序的代码是,例如
function updateCell(row, cell) {
var cellNode = getCellNode(row, cell);
if (!cellNode) {
return;
}
var m = columns[cell], d = getDataItem(row);
if (currentEditor && activeRow === row && activeCell === cell) {
currentEditor.loadValue(d);
} else {
cellNode.innerHTML = d ? getFormatter(row, m)(row, cell, getDataItemValueForColumn(d, m), m, d) : "";
invalidatePostProcessingResults(row);
}
}
我想你问的是获取 cellNode
的权限。
您可以添加
var cellNode = grid.getCellNode(row, cell);
如果你愿意,给你的格式化程序。
在长 运行 中,如果您发现访问单元节点很有用,您可以修改 formatter
函数以及对它的所有调用,以添加 cellNode
到参数列表的末尾。但是,这将是对 slickgrid 代码的修改。
编辑:实际上我刚刚对此进行了测试,但它不起作用,因为在创建单元格时会在创建单元格之前调用格式化程序。我已经修改了最新版本的 SlickGrid 中的格式化程序,这样您就可以选择 return 对象 { text: 'displayText', removeClasses: 'class1 class2', addClasses: 'class1' }
而不是 returning 字符串,并且 classes 将被删除并且应用格式化程序时添加到单元格。删除一系列 classes 允许在应用正确的新 class.
之前清除以前的格式 classes
如何在 slick-grid 自定义单元格格式化程序中应用自定义 angular 过滤器格式化程序
假设我有一个 angular 客户过滤器格式化程序,可以将日期从一种格式转换为另一种格式。
var dateFilter = this.$filter('myDateFilterFormatter')('2006-04-07');
它 returns 作为 4/7/06。
如何在 slick-grid 自定义单元格格式化程序中使用 myDateFilterFormatter
我试过这种方法
this.dateFommatter = function(row, cell, value, columnDef, dataContext){
return "<p>"+ value | myDateFilterFormatter +"</p>";
};
并尝试
this.dateFommatter = function(row, cell, value, columnDef, dataContext){
return "<p>"+ this.$filter('myDateFilterFormatter')(value) +"</p>";
};
两种方式都以错误结束。我无法在 slick-grid 行格式化程序中应用自定义过滤器。你能建议我如何在 slick-grid 中使用自定义过滤器吗?
dateFormatter
函数里面的this
指的是函数本身。
通常使用
var self = this;
... code ...
this.dateFommatter = function(row, cell, value, columnDef, dataContext){
return "<p>"+ self.$filter('myDateFilterFormatter')(value) +"</p>";
};
为了回答您的第二个查询,调用格式化程序的代码是,例如
function updateCell(row, cell) {
var cellNode = getCellNode(row, cell);
if (!cellNode) {
return;
}
var m = columns[cell], d = getDataItem(row);
if (currentEditor && activeRow === row && activeCell === cell) {
currentEditor.loadValue(d);
} else {
cellNode.innerHTML = d ? getFormatter(row, m)(row, cell, getDataItemValueForColumn(d, m), m, d) : "";
invalidatePostProcessingResults(row);
}
}
我想你问的是获取 cellNode
的权限。
您可以添加
var cellNode = grid.getCellNode(row, cell);
如果你愿意,给你的格式化程序。
在长 运行 中,如果您发现访问单元节点很有用,您可以修改 formatter
函数以及对它的所有调用,以添加 cellNode
到参数列表的末尾。但是,这将是对 slickgrid 代码的修改。
编辑:实际上我刚刚对此进行了测试,但它不起作用,因为在创建单元格时会在创建单元格之前调用格式化程序。我已经修改了最新版本的 SlickGrid 中的格式化程序,这样您就可以选择 return 对象 { text: 'displayText', removeClasses: 'class1 class2', addClasses: 'class1' }
而不是 returning 字符串,并且 classes 将被删除并且应用格式化程序时添加到单元格。删除一系列 classes 允许在应用正确的新 class.