您可以在視圖模型中引入附加標誌,例如「isValid」:
self.isValid = ko.computed(function() {
if(self.contacts().length === 0) {
return false;
}
var allContactsHaveNames = self.contacts().filter(function(contact) {
return contact.firstName() !== "" && contact.lastName() !== "";
}).length === self.contacts().length;
return allContactsHaveNames;
});
並在其中進行所有檢查。
當然,這需要在標記的變化:
<button data-bind='click: save, enable: isValid'>Save to JSON</button>
和可觀察到的 「名字」 和 「姓氏」 字段:
self.contacts = ko.observableArray(ko.utils.arrayMap(觸點,function(contact){ return {firstName:ko.observable(contact.firstName),lastName:ko.observable(contact.lastName),phones:ko.observableArray(contact.phones)}; }));
self.addContact = function() {
self.contacts.push({
firstName: ko.observable(""),
lastName: ko.observable(""),
phones: ko.observableArray()
});
};
任何額外的檢查都可以添加到「isValid」複合函數中。
您可以檢查更新的jsfiddle。
P.S.您可以使用Knockout驗證,如評論中建議的@ Sam.C。
來源
2015-12-10 08:49:58
TSV
你看過基因敲除驗證嗎? https://github.com/Knockout-Contrib/Knockout-Validation –
我看過淘汰賽驗證,並在我的項目中包含插件,但是我無法讓它在observableArray上工作。我寧願使用Knockout驗證方法。 – PegR