嵌套路由上 Backbone.js 获取

x4shl7ld  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(151)

我有一个Sites和一个Positions集合,每次用户选择一个新的siteid就会被发送到refreshPositions方法,该方法负责执行fetch调用。
view.js

refreshPositions: function(siteId) {
 this._positions.fetch({
  success: this.onPositionsFetchSuccess.bind(this),
  error: this.onPositionsFetchError.bind(this)
 });
},

因此,每当我需要更新页面上的positions,并且siteId参数具有id时,就会调用refreshPositions,我只是不知道如何让fetch路由到.../sites/n/positions之类的对象,其中n将是siteId
抱歉,如果我错过了我的问题的相关信息,我是相当新的backbone

dsf9zpds

dsf9zpds1#

我明白了,所以你是从你的Positions集合调用fetch。如果你有一个RESTfull api设置的话,这里的开箱即用的功能是获取整个集合(每个Position对象)。如果你想从你的集合中得到更具体的行为,你可以把它写进集合对象定义中。

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

相关问题