如何仅验证模型上的某些属性?目前,我检查传递给validate的对象中是否存在该属性:
validate: function(attrs) {
// Number
if (attrs.minimum) {
if (isNaN(attrs.minimum)) {
return -1;
}
}
if (attrs.maximum) {
if (isNaN(attrs.maximum)) {
return -1;
}
}
}
但如果我想验证字符串值,那么:
if (attrs.mystring) {
// Do validation
}
会失败并且验证永远不会发生。
答案 0 :(得分:1)
Backbone现在支持has属性。所以你可以这样做:
var Person = Backbone.Model.extend({
defaults: {
"name": "Kevin",
"age" : 26,
"job" : "web"
},
validate: function(attrs, options) {
for(k in attrs) {
if(!this.has(k)) {
return k + ' attribute is not exist';
}
}
}
});
var person = new Person;
person.on("invalid", function(model, error) {
console.log(error);
});
答案 1 :(得分:0)
我对你的措辞感到有些困惑,但我想你想先检查它是不是一个空字符串?并且还找出它未定义的可能性..如果那么这就是你想要做的......
validate: function(attrs) {
// Number
if (attrs.minimum) {
if (isNaN(attrs.minimum)) {
return -1;
}
}
if (attrs.maximum) {
if (isNaN(attrs.maximum)) {
return -1;
}
}
if (typeof(attrs.mystring) != "undefined"){
if (!attrs.mystring){
return -1;
}
}
}
如果您只想验证其中一个属性,则应编写验证函数以相应地适应选项
validate: function(attrs, option) {
if (!option){
// Number
if (attrs.minimum) {
if (isNaN(attrs.minimum)) {
return -1;
}
}
if (attrs.maximum) {
if (isNaN(attrs.maximum)) {
return -1;
}
}
if (!attrs.mystring){
return -1;
}
}else{
switch(option){
case("string"):
if (!attrs.mystring){
return -1;
}
break;
case("number"):
// Number
if (attrs.minimum) {
if (isNaN(attrs.minimum)) {
return -1;
}
}
if (attrs.maximum) {
if (isNaN(attrs.maximum)) {
return -1;
}
}
break;
}
}
}
有很多方法可以做到这一点,这可能是效率最低的大声笑,但使用你的例子,它将完成这项工作。
另外,这不是一个真正的骨干。每个人说的问题......但是一般的js