2013-02-06 58 views
2

我找不到任何解決這個,所以這裏是我的問題:淘汰賽驗證消息不插入第一項工作後

我已經設置了驗證一個小表格,在那裏你可以將項目添加到集合(observableArray,稍後實際保存到DB)。

驗證對第一項和驗證消息顯示正常,但第二次驗證消息不會顯示(驗證本身起作用,您不能添加項目)。

這裏是我做的:

  1. 在newSchool對象

    設置驗證,在MainViewModel例如

    self.City = ko.observable(item ? item.City : '').extend(
    { 
        required: true 
    }); 
    
  2. 構建驗證組

    self.schoolErrors = ko.validation.group({ schools: self.newSchool }, { deep: true });

  3. 在MainViewModel :檢查錯誤S,否則進軍收集,初始化newSchool觀察到的新的默認值

    self.addSchool = function() { 
        if (self.schoolErrors().length > 0) { 
         self.schoolErrors.showAllMessages(); 
         return; 
        } 
        self.schools.push(self.newSchool()); 
        self.newSchool(new School()); 
        self.newSchool().load(); 
        self.schoolErrors = ko.validation.group({ schools: self.newSchool }, { deep: true }); }; 
    

爲了調試原因,我打印出來,在學校的物體觀測驗證的參考isValid和isModified值。這些似乎沒有問題。在我插入第一個項目後,isValid和isModified都返回到false

唯一的問題,如上所述,不再顯示驗證消息。

對我來說也很奇怪:我不使用自定義驗證消息模板,除非在一種情況下,我需要根據計算字段進行驗證。這顯示出來,但「內建」驗證消息不。

有什麼想法嗎?

回答

0

很遺憾,當插入新項目時,組不會重新評估。訂閱數組並明確執行。

this.items.subscribe(function() { 
    this.errors = ko.validation.group(this); 
    this.errors.showAllMessages(); 
}, this); 

http://jsfiddle.net/fYrbt/

在我使用Github上爲CDN,所以如果撥弄不起作用等待並重新加載小提琴。