Backbone.js 模型中的额外字段

Backbone.js 模型中的额外字段,backbone.js,model,checked,Backbone.js,Model,Checked,我使用Backbone.js在我的应用程序中管理模型和集合。 因此,我有一个与数据库中的用户实体相匹配的“Usuario”模型。代码如下: var Usuario = Backbone.Model.extend({ defaults:{ idusuario: 'undefined', apellido: 'undefined', nombre: 'undefined', dni: 'undefined', dom_usuario:

我使用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”属性:

根据您提供的详细信息,很难知道错误是在视图的初始化中还是在其他地方。通过使用,您可以看到您的示例非常有效。我在小提琴上创建了一个视图,试图模仿你的场景

但是,不要将
未定义的
未定义的
未定义的
混淆<代码>“未定义”==未定义
“未定义”==未定义
均为false

因此,您的模型应该是:

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"));

应该给出您的预期结果。

我解决mi问题。我动态创建属性“isChecked”,查询是否定义了值:

toggleModel: function(){
    var current = this.model.get('isChecked');
    var status =  current === undefined ? true : !current; 
    this.model.set('isChecked',status);
}

感谢@Meta的回复。

感谢您对“未定义”值的解释!。因此,模型是由Ajax加载的,从服务器返回的json没有“isChecked”…重要吗?
isChecked
没有来自服务器的信息是没有问题的。初始化新对象时,
默认值
对象中的值将复制到新对象。这意味着,通过扩展,如果在
defaults
对象中有一个数组,新对象将把引用复制到该数组(而不是创建数组的副本)。因此,请注意不要将数组或对象放在其中:D