Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Validation 敲除验证是否会干扰自定义扩展器?_Validation_Knockout.js_Knockout Validation - Fatal编程技术网

Validation 敲除验证是否会干扰自定义扩展器?

Validation 敲除验证是否会干扰自定义扩展器?,validation,knockout.js,knockout-validation,Validation,Knockout.js,Knockout Validation,我正在使用knockoutjs2.2.1和knockoutvalidation。 验证和创建自定义扩展器之间是否存在干扰的已知错误 因为我无法添加自定义扩展器。 当我尝试运行此代码时: self.from = ko.observable(new Date()).extend({ reportDate: { timeZoneValue: self.timeZoneValue} }); reportDate是我的扩展程序,敲除验证似乎有问题,他找不到“未定义的规则” 未捕获的TypeError:无

我正在使用knockoutjs2.2.1和knockoutvalidation。 验证和创建自定义扩展器之间是否存在干扰的已知错误

因为我无法添加自定义扩展器。 当我尝试运行此代码时:

self.from = ko.observable(new Date()).extend({ reportDate: { timeZoneValue: self.timeZoneValue} });
reportDate是我的扩展程序,敲除验证似乎有问题,他找不到“未定义的规则”

未捕获的TypeError:无法读取未定义的属性“rules”

有人有这个问题吗?如何解决

以下是reportDate extender的代码:

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,因此您是否可以扩展您的示例以展示如何使用验证插件?JSFIDLE复制程序将是帮助解决您的问题的最理想方法……我添加了更多详细信息通常扩展器应该并行工作,但这取决于您的自定义扩展器实现,因此您可以发布您的
reportDate
代码吗?另外,在您的示例中,我看不到您在哪里/如何使用ko.validaiton,因此您是否可以扩展您的示例以展示如何使用验证插件?JSFIDLE复制程序将是帮助解决您的问题的最理想方法……我添加了更多详细信息通常扩展器应该并行工作,但这取决于您的自定义扩展器实现,因此您可以发布您的
reportDate
代码吗?另外,在您的示例中,我看不到您在哪里/如何使用ko.validaiton,因此您是否可以扩展您的示例以展示如何使用验证插件?JSFIDLE复制程序将是帮助解决您的问题的最理想方法……我添加了更多详细信息通常扩展器应该并行工作,但这取决于您的自定义扩展器实现,因此您可以发布您的
reportDate
代码吗?另外,在您的示例中,我看不到您在哪里/如何使用ko.validaiton,因此您是否可以扩展您的示例以展示如何使用验证插件?JSFIDLE repro是解决您的问题的最理想工具……我已经添加了更多细节,非常感谢您!我甚至想知道是否有必要返回我的可观察目标,但它并没有说得足够清楚,你们必须返回它。敲除验证更让我误会。@TomaszSikora您需要从方法调用返回可观察值的原因是,添加的下一个扩展程序将从扩展程序接收返回值,返回值为
target
。因此,如果您不返回任何对象,那么目标将是未定义的,从而导致您看到的错误。另外,我相信extend方法最终会返回最后一个扩展器返回的值。非常感谢!我甚至想知道是否有必要返回我的可观察目标,但它并没有说得足够清楚,你们必须返回它。敲除验证更让我误会。@TomaszSikora您需要从方法调用返回可观察值的原因是,添加的下一个扩展程序将从扩展程序接收返回值,返回值为
target
。因此,如果您不返回任何对象,那么目标将是未定义的,从而导致您看到的错误。另外,我相信extend方法最终会返回最后一个扩展器返回的值。非常感谢!我甚至想知道是否有必要返回我的可观察目标,但它并没有说得足够清楚,你们必须返回它。敲除验证更让我误会。@TomaszSikora您需要从方法调用返回可观察值的原因是,添加的下一个扩展程序将从扩展程序接收返回值,返回值为
target
。因此,如果您不返回任何对象,那么目标将是未定义的,从而导致您看到的错误。另外,我相信extend方法最终会返回最后一个扩展器返回的值
return target;