【发布时间】:2014-12-17 04:11:48
【问题描述】:
所以这是我的第一个 Backbone 项目,我想知道我是否以最好的方式做事。我的应用程序基本上有两种状态,一种显示搜索框,另一种显示搜索框,其下有一个表格。我的路由器有用于搜索的路线和只有搜索视图的初始登录页面。当用户输入查询时,路由器导航到搜索路径,并且表格视图被添加到页面中。这是我的路由器:
app.Router = Backbone.Router.extend({
routes: {
'': 'index',
'search/coords=:address&age=:age&rad=:rad': 'search'
},
search: function(address, age, rad){
app.statusView || (app.statusView = new app.StatusView());
app.searchView || (app.searchView = new app.SearchView());
app.trigger('status:loading');
app.Practices.fetch({
reset: false,
success: function() {
app.searchView.setElement($('#search-box')).render();
var searchQuery = new app.SearchQueryModel({age: age, coords: address.split(","), radius: rad});
if (!app.tableView){
app.tableView = new app.TableView({model: searchQuery});
} else {
app.tableView.model = searchQuery;
app.tableView.refresh();
};
}
});
app.trigger('status:clear');
},
index: function() {
app.statusView = new app.StatusView();
app.searchView = new app.SearchView();
app.footerView = new app.FooterView();
app.searchView.setElement($('#search-box')).render();
}
});
如您所见,我的视图在索引路径中被实例化,然后在您搜索时使用相同的视图,除非用户直接进入搜索页面,在这种情况下视图在此处被实例化。如果这不是非常理想,我会感到惊讶,因为检查视图是否已经存在于搜索路径中似乎很笨拙。有没有更好的做事方式?
【问题讨论】:
标签: backbone.js