2014-03-13 50 views
2

我有兩個viewmodels,一個是用validation.group和另一個validatedObservabel創建。第二個視圖模型的方法errors.showAllMessages()失敗。爲什麼?爲什麼不validatedObservable添加errors.showAllMessages像ko.validation.group

function VM1 { 
    this.errors = ko.validation.group(this); 
    email:ko.observable().extend({required:true}) 
} 
var vm1 = new VM1(); 

if (!vm1.isValid()) { 
    vm1.errors.showAllMessages(); //works fine 
} 

function VM2 { 
    this.errors = ko.validatedObservable(this); 
    email:ko.observable().extend({required:true}) 
} 
var vm2 = new VM2(); 

if (!vm2.isValid()) { 
    vm2.errors.showAllMessages(); //fails 
} 
+0

「失敗」是什麼意思?拋出異常?你可以看到一些意外的結果?或者是其他東西?你使用的是哪個版本的插件? – nemesv

+0

失敗我的意思是說,錯誤沒有'showAllMessages'方法。 –

回答

2

validatedObservable是validation.group的一個包裝,它提供了更多的特性和功能。它通過在內部創建一個validation.group來實現這一點。爲了訪問validation.group方法(如showAllMessages),您需要通過validatedObservable上的'errors'屬性顯式地訪問內部的validation.group對象。

function VM2 { 
    this.errors = ko.validatedObservable(this); 
    email:ko.observable().extend({required:true}) 
} 
var vm2 = new VM2(); 

if (!vm2.isValid()) { 
    vm2.errors.showAllMessages(); //fails 
    vm2.errors.errors.showAllMessages(); // Works!  
} 

顯然,這看起來有點怪異有errors.errors,但那只是因爲你被點名了validatedObservable「錯誤」。如果你把它叫做'validationModel',那麼語法看起來更好,如:'validationModel'

function VM2 { 
    this.validationModel= ko.validatedObservable(this); 
    email:ko.observable().extend({required:true}) 
} 
var vm2 = new VM2(); 

if (!vm2.isValid()) { 
    vm2.validationModel.errors.showAllMessages(); // Works! 

} 
相關問題