我有以下情形 - 我有一个属性,它具有触发验证程序的扩展名。相同的属性也是依赖/计算的可观测值的一部分。我需要计算的observable在验证器扩展触发之前先运行,因为它更新了验证器所需的一些值。然而,验证器总是首先触发。验证程序扩展之前计算可观察的敲除触发器
在我的模型 -
self.selected = ko.observable(false);
self.selected.extend({ checkVal: { viewModel: self } });
在我的计算观察到的 -
self.mySelectedComputed = ko.computed({
read: function() {
if self.selected()...//I do some updates here
}
});
在我的验证 -
ko.validation.rules['checkVal'] = {
validator: function (val, parameter) {
var isSelected = parameter.viewModel.selected();
if (isSelected) {
//some other checks here based on the values updated by the computed observable
return false;
}
return true;
},
message: "Invalid.",
decorateInputElement: true
};
是否所有的值由计算的观测值更新?如果他们是那么当更新任何值时应该调用验证器。验证器本质上就像一个计算机。以http://jsfiddle.net/znnwozte/为例 – 2014-08-31 20:41:18
谢谢!不,只更新了2个值。如果计算出来的观察值是坐在父级别上呢?当孩子“选择”可观察到的变化时,它需要触发吗? – 2014-09-01 07:10:04
您是否可以更新您的示例以显示更新的所有其他值,并且正如Artur所提到的,这是一个用jsFiddle或jsBin来展示问题的示例应用程序。它真的帮助我们帮助你 – 2014-09-02 07:06:27