mirror of
https://github.com/flarum/framework.git
synced 2025-02-26 13:51:55 +08:00

It’s not quite like the browser’s back button because it doesn’t necessarily go back to the last URL; rather, it goes back to the last interface. So if you go into a discussion, then go to a different discussion via the side pane, the back button will still take you back to the index (not the previous discussion).
49 lines
1.3 KiB
JavaScript
49 lines
1.3 KiB
JavaScript
import Ember from 'ember';
|
|
|
|
import AddCssClassToBody from 'flarum/mixins/add-css-class-to-body';
|
|
import PushesHistory from 'flarum/mixins/pushes-history';
|
|
|
|
export default Ember.Route.extend(AddCssClassToBody, PushesHistory, {
|
|
historyKey: 'index',
|
|
|
|
cachedModel: null,
|
|
|
|
model: function() {
|
|
if (!this.get('cachedModel')) {
|
|
this.set('cachedModel', Ember.ArrayProxy.create());
|
|
}
|
|
return Ember.RSVP.resolve(this.get('cachedModel'));
|
|
},
|
|
|
|
setupController: function(controller, model) {
|
|
this._super(controller, model);
|
|
|
|
if (!model.get('length')) {
|
|
controller.send('loadResults');
|
|
}
|
|
},
|
|
|
|
deactivate: function() {
|
|
this._super();
|
|
this.controllerFor('application').set('backButtonTarget', this.controllerFor('index'));
|
|
},
|
|
|
|
actions: {
|
|
refresh: function() {
|
|
this.set('cachedModel', null);
|
|
this.refresh();
|
|
},
|
|
|
|
didTransition: function() {
|
|
var application = this.controllerFor('application');
|
|
if (application.get('backButtonTarget') === this.controllerFor('index')) {
|
|
application.set('backButtonTarget', null);
|
|
}
|
|
|
|
this.controllerFor('composer').send('minimize');
|
|
this.controllerFor('index').set('paned', false);
|
|
this.controllerFor('index').set('paneShowing', false);
|
|
}
|
|
}
|
|
});
|