在嵌套路由上获取主干

时间:2017-09-13 11:40:46

标签: backbone.js

我有一个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感到很陌生。

1 个答案:

答案 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)
    });
},