我正在使用Handsontable v0.35.1,这是发布此问题时的最新版本。它用作Angular 5(Typescript)组件和视图的一部分。
对于表格中的每个单元格,我会根据official documentation中的指南附加自定义验证程序。代码看起来像这样:
class ValidationService {
static myCustomColumnAValidator(value, callback) {
var contextObject = this;
//... validation logic
}
static myCustomColumnBValidator(value, callback) {
var contextObject = this;
//... validation logic
}
}
var hot = new Handsontable(document.getElementById('myTableContainer'), {
data: [ { 'ColumnA': 'Data'}, { 'ColumbB' : 'Data' } }],
columns: [
{
data: 'ColumnA',
validator: ValidationService.myCustomColumnAValidator
},
{
data: 'ColumnA',
validator: ValidationService.myCustomColumnBValidator
}
]
});
问题是,我可以将一些额外的参数传递给自定义验证器函数(myCustomColumnAValidator和myCustomColumnBValidator),而不是value
和callback
函数引用吗?我需要一些额外的参数作为验证逻辑的一部分。
另请注意,我必须将ValidationService
中的自定义验证程序函数标记为static
,因为当Handsontable调用时,上下文对象this
会被覆盖为ColumnSettings
对象验证功能。如果不是这种情况,我可以通过构造函数使用一些成员变量初始化ValidationService,并使用this
在同一验证函数的非静态版本中使用,这将引用ValidationService实例。但这似乎不可能,因为Handsontable会覆盖“this”上下文对象,我可以通过使用ValidationFunction.call(contextObject,value,callback)机制的Handsontable代码看到这一点。
任何指针都将非常感激。谢谢!
答案 0 :(得分:0)
通过你想要的任何东西
columns: [
{
data: 'ColumnA',
validator: ValidationService.myCustomColumnAValidator,
customParameter: 10
}
]
你可以在验证器中像this.customParameter
那样访问它。
答案 1 :(得分:0)
尝试这种方式
columns: [
{
data: 'ColumnA',
validator: (value, callback, extraData = this.something) => {
console.log(extraData);
}
}
]
答案 2 :(得分:0)
使用 Typescript,我能够执行以下操作,以便将附加参数传递给 Handsontable 列验证器函数,以便验证器可以基于此参数动态进行。就我而言,参数是一个完整的对象,其中包含我需要评估的许多属性:
literal