Backbone.js 模型中的额外字段
我使用Backbone.js在我的应用程序中管理模型和集合。 因此,我有一个与数据库中的用户实体相匹配的“Usuario”模型。代码如下: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:
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