我正在尝试从骨干模型中完全删除一个属性.该模型正在发送到一个不是非常灵活的API,如果我发送我应该发送的其他属性,它将会中断,所以我需要删除一个属性,使其不再存在.
我试过model.unset,从this question,但是当我打印出对象时,我想要删除的属性仍然列出,只是一个值为null.
我需要的属性才能完全消失.
我的基本结构是:
model.unset("AttrName","silent");
解决方法
问题是您正在使用参数取消设置不正确. “静音”应该是
options hash的一部分,而不是单独的参数.这样做:
model.unset("AttrName",{ silent: true });
奇怪的行为的原因可以从annotated source:
unset: function(attr,options) { (options || (options = {})).unset = true; return this.set(attr,null,options); },
unset方法假定其options参数是一个对象,并尝试创建或修改它,然后将其传递给set方法.如果你传递一个字符串,那么代码的无意义的效果是将属性设置为null,而不是将其设置为null.