【发布时间】:2012-05-14 08:08:15
【问题描述】:
所以我正在开发一个主干应用程序,并尝试使用 require.js 尽可能多地模块化事物。 This 一直是我的向导。
我无法让我的视图始终获取我的收藏。如果我从基本 url (myapp.com/) 访问我的应用程序,并转到我的视图路径,则会获取集合。如果我不去视图,而是从myapp.com/#/campaigns 访问它,则不会获取集合。
这是一些相关的代码。
router.js
define([
'jQuery',
'Underscore',
'Backbone',
'views/home/main',
'views/campaigns/list'
], function($, _, Backbone, mainHomeView, campaignListView ){
var AppRouter = Backbone.Router.extend({
routes: {
// Define some URL routes
'campaigns': 'showCampaigns',
// Default
'*actions': 'defaultAction'
},
showCampaigns: function(){
campaignListView.render();
},
defaultAction: function(actions){
// We have no matching route, lets display the home page
//mainHomeView.render();
}
});
var initialize = function(){
var app_router = new AppRouter;
Backbone.history.start();
};
return {
initialize: initialize
};
});
collections/campaigns.js
define([
'jQuery',
'Underscore',
'Backbone',
'models/campaigns'
], function($, _, Backbone, campaignsModel){
var campaignsCollection = Backbone.Collection.extend({
model: campaignsModel,
url: '/campaigns',
initialize: function(){
}
});
return new campaignsCollection;
});
视图/广告系列/list.js
define([
'jQuery',
'Underscore',
'Backbone',
'collections/campaigns'
], function($, _, Backbone, campaignsCollection){
var campaignListView = Backbone.View.extend({
el:$('#container'),
initialize:function(){
this.collection = campaignsCollection;
this.collection.fetch();
},
render: function(){
var data = {
campaigns: this.collection,
_: _
};
$('#container').html('Campaigns length: '+data.campaigns.models.length);
}
});
return new campaignListView;
});
关于我做错了什么有什么想法吗?我相信这与在视图的initalize 函数中调用this.collection.fetch() 有关。如果是这个问题,我应该把fetch()放在哪里?
【问题讨论】:
标签: backbone.js backbone-views