我对Backbone相对较新,我正在尝试在我的应用程序中使用PageableCollection。
https://github.com/wyuenho/backbone-pageable
有人可以指点我,我做错了什么?我正在使用骨干1.0.0
我有一个集合和一个如下定义的模型:
var VoteList = Backbone.PageableCollection.extend({
model: Vote,
url: config.service + 'votes'
});
var Vote = Backbone.Model.extend({
url: function () {
return config.service + 'vote/' + this.id;
}
});
稍后在申请中:
this.collections.voteList = new VoteList([], {mode: "client", state: {pageSize: 12}});
....
this.collections.voteList.remove(options.model);
PageableCollection.remove()方法触发DELETE事件,该事件使用VoteList集合(?)的URL来访问Web服务,这反过来又产生错误405“方法不允许”,因为DELETE方法应该具有{ID}
@DELETE
@Path("/vote/{id}")
@Consumes({MediaType.APPLICATION_JSON})
public void deleteVoting(@PathParam("id") Integer id) {
log.info("deleting " + id.toString());
}
当我通过实例化正常的Backbone.Collection
来删除分页时var VoteList = Backbone.Collection.extend({ ... });
一切都按预期工作,Backbone在删除时使用模型url + id。所以我的问题是如何让PageableCollection以同样的方式运行?
答案 0 :(得分:1)
今天早上收到了来自插件作者的邮件,它似乎是Backbone 1.0.0中的一个已知错误。我想它会随着版本1.0.1而消失
请参阅此主题:https://github.com/wyuenho/backbone-pageable/issues/70
为了解决问题,我使用了Backbone的最新“主”分支,修复了这个问题:
https://raw.github.com/jashkenas/backbone/master/backbone.js
或者,如果由于某种原因你不能使用开发分支,那么这样的临时解决方案也会起作用:
var Vote = Backbone.Model.extend({
initialize: function () {
this.url = function () {
return config.service + 'vote/' + this.get('id')
}
}
});
答案 1 :(得分:0)
升级到主干1.1.0 似乎解决了这个问题。
我遇到了与backbone-pageable扩展的骨干1.0.0集合相同的问题。
抬头!请务必留意1.1 upgrade notes,因为主干1.1与1.0代码不完全兼容,例如传递给视图的options
不是更长时间自动显示为this.options
。