从Backbone.js模型中完全删除属性

Fri*_*c14 11 javascript backbone.js backbone-model

我试图从骨干模型中完全删除属性.该模型被发送到一个不太灵活的API,如果我发送我应该发送的属性,它将会中断,所以我需要删除一个属性,使其不再存在.

我试过model.unset,从这个问题,但当我打印出对象时,我正在尝试删除的属性仍然列出,只是值为null.

我需要完全消失该属性.

我的基本结构是:

model.unset("AttrName", "silent");
Run Code Online (Sandbox Code Playgroud)

McG*_*gle 19

问题是您使用的参数unset不正确."Silent"应该是选项哈希的一部分,而不是单独的参数.这有效:

model.unset("AttrName", { silent: true });
Run Code Online (Sandbox Code Playgroud)

注释源可以看出奇怪行为的原因:

unset: function(attr, options) {
  (options || (options = {})).unset = true;
  return this.set(attr, null, options);
},
Run Code Online (Sandbox Code Playgroud)

unset方法假定其options参数是一个对象,并尝试创建或修改它,然后将其传递给该set方法.如果您传递一个字符串,那么代码的无意影响是将该属性设置为null,而不是取消设置它.