2012-11-08 62 views
3

我有一個Backbone模型,並在調用setter時進行一些驗證。我不想返回錯誤,而是要覆蓋該值。我該怎麼做呢?在Backbone.js驗證過程中更改值

myObj = Backbone.Model.extend({ 
    // Attributes 
    x: function() { }, 
    y: function() { }, 

     // Validation 
     validate: function(atr) { 

      // Checking for number 
      var numberRegex = /^\d+$/; 

      if(!numberRegex.test(atr.x)) // not number 
        atr.x = 'NA'; // Trying to set x to "NA" 
     } 
}); 

謝謝!

回答

1

您在驗證函數中接收到的atr是模型屬性的副本。因此,更改它不會更改模型中的屬性。在驗證呼叫this.set('x','NA',{silent:true});中設置屬性。