在将数据获取到需要的位置时遇到一些问题。
在我的路由器中,我有一个传递ID的函数,如下所示:
routes: {
'deck/:id': 'getDeckId'
},
getDeckId: function(id) {
this.loadView(new DeckView())
},
loadView: function(view) {
this.view && (this.view.kill ? this.view.kill() : this.view.remove());
this.view = view;
}
在我的集合中,我加载了一个JSON文件。在这个URL中,我想添加我在路由器中传递的ID。
var DeckCollection = Backbone.Collection.extend({
model: DeckModel,
url: "myUrl"+id, //the id i passing from my router
parse: function (response) {
return response;
},
initialize: function() {
},
return DeckCollection;
});
视图
var DeckView = Backbone.View.extend({
//initialize etc
});
因此,当视图初始化时,我想用路由器传递的ID加载这个JSON。我该怎么做?
将id传递给DeckView构造函数。
routes: {
'deck/:id': 'getDeckId'
},
getDeckId: function(id) {
this.loadView(new DeckView({deckId: id}))
},
loadView: function(view) {
this.view && (this.view.kill ? this.view.kill() : this.view.remove());
this.view = view;
}
创建将使用id和您的url 的url函数
var DeckCollection = Backbone.Collection.extend({
id: '',
model: DeckModel,
url: function () {
return 'myURL' + this.id;
}
});
在视图初始化时设置集合的id
var DeckView = Backbone.View.extend({
initialize: function (options) {
this.decks = new DeckCollection();
this.decks.id = options.id;
this.decks.fetch();
}
});