我有一个Sites
和一个Positions
集合。每次用户选择新的site
时,id
都会发送到负责进行refreshPositions
调用的fetch
方法。
获得头寸的路线如下'.../sites/1/positions'
view.js
refreshPositions: function(siteId) {
this._positions.fetch({
success: this.onPositionsFetchSuccess.bind(this),
error: this.onPositionsFetchError.bind(this)
});
},
每当我需要更新页面上的refreshPositions
并且positions
参数具有ID时,就会调用siteId
,我只是不知道告诉fetch路由类似于.../sites/n/positions
,其中n
将是siteId
。
很抱歉,如果我错过了相关信息,我对backbone
感到很陌生。
答案 0 :(得分:1)
我明白了,所以你从fetch
收集中呼叫Positions
。如果您设置了RESTfull api,则可以使用开箱即用的功能来获取整个集合(每个Position
对象)。如果您想从集合中获得更具体的行为,可以将其写入Collection对象定义。
var PositionCollection = Backbone.Collection.extend({
initialize: function(models, options) {
this.siteId = (options && options.siteId) || 0;
},
url: function() {
if (!this.siteId) {
return '/positions'; // or whatever
}
return '/sites/' + this.siteId + '/positions';
},
// etc...
});
然后,假设_positions
引用PositionCollection
的实例,您可以这样做:
refreshPositions: function(siteId) {
this._positions.siteId = siteId; // or wrap in a setter if you prefer
this._positions.fetch({
success: this.onPositionsFetchSuccess.bind(this),
error: this.onPositionsFetchError.bind(this)
});
},