Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/405.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 主干验证功能不工作_Javascript_Jquery_Backbone.js - Fatal编程技术网

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';
    }
}

如果立即求值而没有参数,则会立即得到错误,因为未定义属性