【发布时间】:2018-07-18 08:53:00
【问题描述】:
我正在使用 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
}
]
});
问题是,除了value 和callback 函数参考之外,我可以向自定义验证器函数(myCustomColumnAValidator 和myCustomColumnBValidator)传递一些额外的参数吗?我需要一些额外的参数作为验证逻辑的一部分。
还请注意,我必须将ValidationService 中的自定义验证器函数标记为static,因为当Handsontable 调用验证函数时,上下文对象this 被覆盖为ColumnSettings 对象。如果不是这种情况,我可以通过其构造函数使用一些成员变量初始化 ValidationService,并使用引用 ValidationService 实例的this 在同一验证函数的非静态版本中使用。但这似乎是不可能的,因为 Handsontable 覆盖了“this”上下文对象,我可以通过单步执行使用 ValidationFunction.call(contextObject, value, callback) 机制的 Handsontable 代码看到它。
任何指针将不胜感激。谢谢!
【问题讨论】:
标签: handsontable