我意识到这有点不标准,但我正在寻找一种方法,以便我可以使用 Backbone 的 fetch 方法来删除模型上未包含在服务器的 json 响应中的属性。基本上是排除属性的自动取消设置。
现在,我可以擦除所有内容并在模型上重新设置,但我想以一种不会触发剩余属性的更改事件的方式执行此操作。
我还希望不必遍历响应对象并调用unset
. 我缺少 Backbone 的一个明显功能吗?
我为这种情况构建了一个小提琴。尝试让所有测试通过,同时只修改该model.fetch()
行。
http://jsfiddle.net/gtSwC/
var mockResponse = '{ "id": 1 }';
this.server.respondWith("GET", "/test", [
200,
{ "Content-Type": "application/json" },
mockResponse
]);
var model = new MyModel({ foo: 'remove me', keep: true });
model.on('change:keep', function () {
ok(false, 'Failure! Do not trigger change on this if at all possible.');
});
// Act
model.fetch(); // Need a flag here?
this.server.respond();
// Assert
equal(model.get('foo'), undefined, 'I want this removed via fetch');