2013-12-09 86 views
1

我正在關注這些https://tutsplus.com/course/connected-to-the-backbone/講座以學習骨幹,並且在我知道validate()函數(如果存在)被調用時,只要我們在該模型內設置任何變量的值。我寫了這個模式:骨幹模型中的驗證

var PersonModel = Backbone.Model.extend({ 

    defaults: { 
     name: 'Kamran Ahmed', 
     rollNo: '1224', 
     email: '[email protected]' 
    }, 

    validate: function (attrs){ 
     if (!attrs.name) { 
      return 'You must provide a name'; 
     } 
     if (attrs.rollNo < 0) { 
      return 'Roll Number must be positive'; 
     } 
    } 
}); 

,我試圖如下:

var person = new PersonModel(); 
person.set('rollNo', -100) // trying to violate the validation rule 

但它從來沒有驗證即值-100仍然被分配到rollNo。此外,當我做person.set('rollNo', -100)時它會一直返回整個對象,而在違反驗證規則時它應該返回false。我在這裏做錯了什麼?爲什麼驗證沒有執行?

回答

1

從文檔:

By default validate is called before save, but can also be called before set if 
{validate:true} is passed. 

所以你需要使用它喜歡:

person.set({'rollNo':-100},{validate:true}) 

您可以爲Backbone.Modelvalidate讀了。

附註: 看來教程是針對Backbone 0.9.2的,而當前版本是1.1.0。考慮找到最新的教程,或閱讀Change Log