【发布时间】:2014-02-28 22:46:02
【问题描述】:
我正在使用 KnockoutJS 2.2.1 和 Knockout-Validation。 验证和创建自定义扩展程序之间是否存在干扰的已知错误?
因为不知何故我无法添加我的自定义扩展程序。 当我尝试运行此代码时:
self.from = ko.observable(new Date()).extend({ reportDate: { timeZoneValue: self.timeZoneValue} });
reportDate 是我的扩展器,淘汰赛验证似乎有问题,他找不到“未定义的规则”
未捕获的类型错误:无法读取未定义的属性“规则”
有人遇到过这个问题吗?如何解决?
这是reportDate扩展器的代码:
ko.extenders.reportDate = function (target, options) {
var lastValidValue = new Date();
target.subscribe(function (newValue) {
if (newValue == null) {
target(lastValidValue);
} else {
lastValidValue = newValue;
}
var isoDate = moment(DateProvider.adjustDateFromTimeZoneToUtc(target(), options.timeZoneValue())).toISOString();
target.ISODateString = isoDate;
});
};
我还想知道淘汰赛验证的自定义规则是否会破坏这里的某些东西。特别是 registerExtenders() 函数,我不清楚它的作用。
$(function () {
ko.validation.init({
insertMessages: true,
decorateElement: true,
errorElementClass: "error",
errorMessageClass: "validation-message",
grouping: { observable: true, deep: true }
});
ko.validation.registerExtenders();
});
【问题讨论】:
-
通常扩展器应该并排工作,但这取决于您的自定义扩展器实现,所以您能否发布您的
reportDate代码?同样在您的示例中,我看不到您在哪里/如何使用 ko.validaiton,所以您还可以扩展您的示例以显示您如何使用验证插件吗? jsfiddle repro 将是帮助您解决问题的最理想选择...... -
我添加了更多细节
标签: validation knockout.js knockout-validation