2017-09-13 41 views
0

我有一个SitesPositions集合。每当用户选择一个新的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被称为每当我需要更新页面上的positionssiteId参数有ID,我只是不知道告诉获取路由到像.../sites/n/positions其中n将是siteId

对不起,如果我错过了我的问题的相关信息,我很新backbone

+1

'Backbone.history.navigate( '网站/' +网站ID + '/位置')'? –

回答

1

我明白了,所以您从Positions收藏中致电fetch。如果您设置了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... 
}); 

然后,假设_positionsPositionCollection一个实例,你可以这样做:

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