1

通常在我的主干验证中,我有大量的if()语句,正如我在许多其他代码示例中看到的那样。验证几乎是骨干中的废话。但是,这种if()方式似乎有效。我想稍微清理一下代码并编写一些代码来return error阻止骨干保存属性,但事实并非如此!

旧代码有效

validate : function(attr){
    if(attr.firstName){
        var defaultValue = 'first name',
            value = attr.firstName.toLowerCase();

        if(value == defaultValue){
            return 'error';
        }
    }
}

新代码不起作用

//My default strings from another place
MyApp.strings.defaults = {
    firstName : 'first name'
}

//Model Validate function
validate : function(attr){
    jQuery.each(attr, function(key, value){
        var defaultValue = MyApp.strings.defaults[key];

        if(defaultValue){
            defaultValue = jQuery.trim(defaultValue.toLowerCase());

            if(value == defaultValue){
                console.log(value, defaultValue); //fires, and outputs both as being the same
                return 'error';
            }
        }
    });
}

您是否不允许在 Backbone 验证中循环遍历属性?

4

1 回答 1

2

您没有从 validate 方法返回任何值,您是'error'each()回调方法返回的,而不是从validate

//My default strings from another place
MyApp.strings.defaults = {
    firstName : 'first name'
}

//Model Validate function
validate : function(attr){
    var error;
    jQuery.each(attr, function(key, value){
        var defaultValue = MyApp.strings.defaults[key];

        if(defaultValue){
            defaultValue = jQuery.trim(defaultValue.toLowerCase());

            if(value.toLowerCase() == defaultValue){
                console.log(value, defaultValue); //fires, and outputs both as being the same
                error = 'error';
                return false;
            }
        }
    });
    return error;
}
于 2013-08-08T03:54:40.023 回答