Javascript 主干验证功能不工作
我正在使用主干验证函数,但它再次出现此错误Javascript 主干验证功能不工作,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我正在使用主干验证函数,但它再次出现此错误uncaughttypeerror:Object[Object Object]没有方法“apply”。我真的不知道为什么它会给我这个错误 这是我的密码 $(function () { var Veh = new Backbone.Model.extend({ validate: function (attrs) { var validColors = ['white','red', 'black']; var co
uncaughttypeerror:Object[Object Object]没有方法“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');
});
更新:错误是使用了新的。使用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
有关无意中使用新版本的副作用,请参见问题。如果您使用的是未统一的版本,您可以单步查看代码并查看错误所在。无论如何,我马上要做的是更改
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';
}
}
如果立即求值而没有参数,则会立即得到错误,因为未定义属性