Backbone.js 在嵌套路由上获取主干

Backbone.js 在嵌套路由上获取主干,backbone.js,Backbone.js,我有一个网站和一个职位集合。每次用户选择一个新站点时,id都会被发送到refreshPositions方法,该方法负责执行fetch调用。 获取位置的路径如下所示“…/sites/1/positions” view.js 因此,每当我需要更新页面上的位置时,就会调用refreshPositions,并且siteId参数具有id,我只是不知道如何告诉fetch将路由到类似…/sites/n/positions的位置,其中n将是siteId 很抱歉,如果我错过了我问题的相关信息,我对主干网非常陌生。

我有一个网站和一个职位集合。每次用户选择一个新站点时,id都会被发送到refreshPositions方法,该方法负责执行fetch调用。 获取位置的路径如下所示“…/sites/1/positions”

view.js

因此,每当我需要更新页面上的位置时,就会调用refreshPositions,并且siteId参数具有id,我只是不知道如何告诉fetch将路由到类似…/sites/n/positions的位置,其中n将是siteId

很抱歉,如果我错过了我问题的相关信息,我对主干网非常陌生。

我明白了,所以您正在从职位集合中调用fetch。如果设置了RESTfull api,那么现成的功能就是获取整个集合中的每个位置对象。如果希望从集合中获得更具体的行为,可以将其写入集合对象定义中

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)
    });
},
主干.历史.导航'sites/'+siteId+'/positions'?
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)
    });
},