我使用Backbone.js来管理我的应用中的模型和集合。 所以,我有一个“Usuario”模型,与数据库中的用户实体相匹配。这是代码:
var Usuario = Backbone.Model.extend({
defaults:{
idusuario: 'undefined',
apellido: 'undefined',
nombre: 'undefined',
dni: 'undefined',
dom_usuario: 'undefined',
nombreusuario: 'undefined',
activo: 'undefined',
bloqueado: 'undefined',
recomendar_cambio_clave: 'undefined',
isChecked: false
}
});
模型的所有字段都在实体用户中,“isChecked”除外。当检查用户模型时,isChecked属性为true。 但是当我通过“isChecked”查询时,js无法识别变量:
console.log(this.model.get('isChecked'));
undefined
console.log(this.model.get('nombre'));
Horacio José
任何想法?。
更新1 它是我的代码的摘录,通过Ajax加载集合(Usuario):
var anUrl = $("#ajax-call").val();
var myCol = new CustomCollection({
model: Usuario,
filterAttribute: 'apellido'
});
myCol.fetch({async: false, url: anUrl});
myCol.saveOriginal();
console.log(myCol);
当在控制台中显示集合时,模型不包含“isChecked”属性:
答案 0 :(得分:2)
根据您提供的详细信息,很难知道错误是否在您的视图初始化或其他任何内容中。使用this fiddle,您可以看到您的示例完美无缺。我试图模仿你的场景,在那个小提琴中创建了一个视图。
但是,请勿将'undefined'
或"undefined"
与undefined
混淆。 "undefined" == undefined
和"undefined" === undefined
都是假的。
所以,你的模型应该是:
var Usuario = Backbone.Model.extend({
defaults : {
idusuario : undefined,
apellido : undefined,
nombre : undefined,
dni : undefined,
dom_usuario : undefined,
nombreusuario : undefined,
activo : undefined,
bloqueado : undefined,
recomendar_cambio_clave : undefined,
isChecked : false
}
});
然后:
var u = new Usuario();
console.log(u.get("isChecked"));
应该给出你期望的结果。
答案 1 :(得分:0)
我解决了mi问题。我动态创建属性“isChecked”,查询是否定义了值:
toggleModel: function(){
var current = this.model.get('isChecked');
var status = current === undefined ? true : !current;
this.model.set('isChecked',status);
}
感谢@Meta的回复。