使用 Ko.validation 和 Ko.mapping 进行异步验证

Async validation with Ko.validation and Ko.mapping

我正在使用 ko.validation 和 ko.mapping 在 table 中显示一些数据。可以编辑此数据或将更多数据添加到 table.

参见fiddle:http://fiddle.jshell.net/juandozco/v9L69g8a/5/

我正在重复使用该表单来编辑或创建此项目。我的问题是,项目中的一些属性无法编辑,所以我在编辑模式下隐藏了这些属性,但验证仍然发生并且不让表单继续。

我尝试了 3 种不同的方法,请参阅行:

1, 90 and 112 in the javascript section in my fiddle

我怎样才能实现这个验证?

好吧,你需要 skip 编辑部分的验证,所以你需要在你的 observable 上添加像 validatable: false 这样的扩展器。

代码:

self.edit = function (user) {
    self.User().userName.extend({ validatable: false }); // Key here
    self.editing(true);
    ............
    self.User().userName(user.userName());
};

工作样本 here