2012-10-21 129 views
1

我正在使用骨幹驗證功能,但它又給出了這個錯誤Uncaught TypeError: Object [object Object] has no method 'apply'。我真的不知道爲什麼它給了我這個錯誤。骨幹驗證功能不起作用

這裏是我的代碼

$(function() { 
var Veh = new Backbone.Model.extend({ 
    validate: function (attrs) { 
     var validColors = ['white','red', 'black']; 
     var colorIsValid = function (attrs) { 
      if(!attrs.color) return true; 
      return _(validColors).include(attrs.color); 
     } 
     if(!colorIsValid(attrs)) { 
      return 'wrong color'; 
     } 
    } 
}); 
var car = new Veh(); 
car.on('error', function (model, error) { 
    console.log(error); 
}); 
car.set('foo', 'bar'); 
}); 

回答

1

更新:該錯誤是使用新的。在使用Backbone.extend時不要做新的事情。這是因爲你正在創建一個類而不是一個對象。

$(function() { 
var Veh = Backbone.Model.extend({ 
    validate: function (attrs) { 
     var validColors = ['white','red', 'black']; 
     var colorIsValid = function (attrs) { 
      if(!attrs.color) return true; 
      return _(validColors).include(attrs.color); 
     } 
     if(!colorIsValid(attrs)) { 
      return 'wrong color'; 
     } 
    } 
}); 

通知 var Veh = Backbone.Model.extend而不是

var Veh = new Backbone.Model.extend 

this問題,使用新的無意中的副作用。

+0

如果你不帶參數立即評估你會立即得到一個錯誤的ATTRS沒有定義 – Tallmaris

+0

@Tallmaris對不起我的錯誤。我已經更新了答案。 – Pramod

1

如果您有未經驗證的版本,則可以逐步驗證代碼並查看錯誤的位置。我會馬上去做,反正就是改變colorIsValid功能的帕拉姆名稱,以便它不一樣外功能...

validate: function (attrs) { 
    var validColors = ['white','red', 'black']; 
    var colorIsValid = function (modelAttrs) { 
     if(!modelAttrs.color) return true; 
     return _(validColors).include(modelAttrs.color); 
    } 
    if(!colorIsValid(attrs)) { 
     return 'wrong color'; 
    } 
}