我意识到它有点不标准,但我正在寻找一种方法,以便我可以使用Backbone的fetch方法来删除模型上未包含在服务器的json响应中的属性。基本上是排除属性的自动取消设置。
现在,我可以擦除所有内容并重新设置模型,但我想以不会触发其余属性的更改事件的方式执行此操作。
我也不想循环遍历响应对象并调用unset
。 Backbone有一个明显的功能,我错过了吗?
我为这个场景构建了一个小提琴。尝试通过所有测试,只修改model.fetch()
行。
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');
答案 0 :(得分:0)
我刚刚看了一下,似乎没有Model #fetch的“重置”标志。虽然,你可以用沉默的旗帜取消。从0.9.10开始,Backbone的行为应该让你满意:
“在更改时传递{silent:true}将不再延迟个别”change:attr“事件,而是完全沉默。”