我在尋找一個淘汰賽驗證插件和我偶然發現knockout.validation看起來非常有前途的,但是,它有一個致命的缺點..Knockout.Validation不可用,任何替代方法?或變通辦法?
一旦你創建了一個ko.validatedObservable({名稱:FOO} )您無法將新對象分配給該可觀察對象。
例如:在我的視圖模型中,我實例化一個驗證的observable。
var item = new ko.validatedObservable(new Tag({}));
我就能夠調用:
item().isValid(); //Returns false in this case because Tag is empty
標記看起來像這樣
Model.Tag = function (data) {
var
Id = ko.observable(data.Id),
Name = ko.observable(data.Name).extend({ required: true, maxLength: 64 }),
Description = ko.observable(data.Description).extend({ required: true, maxLength: 512 });
return {
Id: Id,
Name: Name,
Description: Description
};
};
的問題是,如果我想從服務器獲取一個新的標籤,然後修改標籤..
$.ajax({
url: API + "/" + id,
type: 'GET',
dataType: 'json',
timeout: Timeout,
statusCode: {
200: function(response) { item(response); }, //Here is where the bug is!
404: ItemNotFound
},
error: function() {
Item(new Type({}));
}
});
項目now contains從服務器的價值,但是,當我運行
item().isValid(); //False is returned
這被列爲GitHub的項目https://github.com/ericmbarnard/Knockout-Validation/issues?state=open錯誤#209。
有沒有人知道一個優雅的工作?還是另一個可以實現這個目標的插件?
@nemsev非常感謝你的迴應,這就解決了這個問題。我的單元現在全部通過測試。你知道更新git-hub上的項目是什麼嗎?我想我可以在這裏提供一個錯誤解決方案的鏈接。再次感謝! – mcottingham 2013-03-10 17:23:19
對此有何改進?如果初始值未定義,那麼在聲明validatedObservable時它不起作用。我已經修改它來支持這種情況,但我不確定是否有更好的選擇? https://gist.github.com/thj-dk/1f243519bfc2954bca60 – 2014-08-11 13:50:43
@TommyJakobsen看來這部分插件沒有改變:https://github.com/Knockout-Contrib/Knockout-Validation/blob/98a25714560e321779cbe6779d00ee4343871add /Src/ko.extensions.js。所以目前這是解決方案。但是,您可以在Github上使用改進的修復程序和此問題的描述創建問題/請求。 – nemesv 2014-08-12 06:57:48