Initial commit
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
var _ = require('underscore');
|
||||
var TabPaneView = require('./tab-pane-view.js');
|
||||
var TabPaneViewItemRouted = require('./tab-pane-item-view-routed.js');
|
||||
var Router = require('builder/routes/router');
|
||||
|
||||
module.exports = TabPaneView.extend({
|
||||
initialize: function (options) {
|
||||
TabPaneView.prototype.initialize.call(this, options);
|
||||
|
||||
this._initialRoute = false;
|
||||
this.onRouteChange = options.onRouteChange;
|
||||
this.onRouteChange && this.listenTo(Router.getRouteModel(), 'change:currentRoute', this.onRouteChange);
|
||||
this.onRouteChange && this._setInitialRoute(Router.getRouteModel());
|
||||
},
|
||||
|
||||
_renderTabPaneItemView: function (model) {
|
||||
var tabPaneItemView = new TabPaneViewItemRouted(_.extend({ model: model }, this._tabPaneItemOptions));
|
||||
this.addView(tabPaneItemView);
|
||||
this.$('.js-menu').append(tabPaneItemView.render().el);
|
||||
},
|
||||
|
||||
_setInitialRoute: function (routeModel) {
|
||||
this._initialRoute = true;
|
||||
this.onRouteChange(routeModel);
|
||||
},
|
||||
|
||||
_renderTabPaneContentView: function (model) {
|
||||
var selectedView = TabPaneView.prototype._renderTabPaneContentView.call(this, model);
|
||||
var currentRoute = Router.getCurrentRoute();
|
||||
var routeName = _.last(currentRoute.split('/'));
|
||||
var tabName = model.get('name');
|
||||
|
||||
if (this._initialRoute) {
|
||||
var parsed = selectedView.handleRoute && selectedView.handleRoute(Router.getRouteModel());
|
||||
|
||||
if (parsed === false) {
|
||||
Router.replaceWithRoot();
|
||||
}
|
||||
|
||||
if (this.collection.isDisabledTab(routeName) && tabName !== routeName) {
|
||||
var newRoute = currentRoute.replace(routeName, tabName);
|
||||
Router.replaceState(newRoute);
|
||||
}
|
||||
|
||||
this._initialRoute = false;
|
||||
} else {
|
||||
selectedView.handleRoute && selectedView.handleRoute(Router.getRouteModel());
|
||||
}
|
||||
|
||||
return selectedView;
|
||||
}
|
||||
});
|
||||
Reference in New Issue
Block a user