模型中的额外字段

时间:2013-12-06 15:10:18

标签: backbone.js model checked

我使用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”属性: enter image description here

2 个答案:

答案 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的回复。