У меня есть следующие два пути для редактирования объекта (узла) в моем приложении:доступ История просмотра в уголек
- Список узлов -> нажмите изменить значок
- Список узлов -> выберите узел - > нажмите кнопку редактирования
У меня есть возможность отменить редактирование. Когда я отменяю, я хочу, чтобы маршрутизатор (контроллер?) Вернулся в нужное место. То есть, если я пришел из списка узлов, я хочу, чтобы отмена вернулась к «списку узлов» (#nodes
). Если я пришел из представления узла, я хочу, чтобы отмена вернулась к представлению узла (#nodes/show/node-id
). В настоящее время это реализация в моем NodesEditController
:
SettingsApp.NodesEditController = Ember.ObjectController.extend({
needs: ['nodesIndex'],
selectedNode: null,
selectedNodeType: null,
nodes: [],
...
cancel: function() {
this.stopEditing();
this.transitionToRoute('nodes.show', this.get('content'));
},
...
});
Как вы можете видеть, маршрут для cancel
действия является фиксированным (nodes.show
). Но в первом случае я хотел бы сделать this.transitionToRoute('nodes.index');
. Так что мой cancel
метод должен быть чем-то вроде этого:
cancel: function() {
this.stopEditing();
if (some_test) { this.transitionToRoute('nodes.show', this.get('content'));
} else { this.transitionToRoute('nodes.index'); }
}
Как реализовать some_test
? Что я могу проверить, чтобы узнать, как я добрался до текущего маршрута?
Не должно быть 'Ember.Route.reopen'? Могу ли я это сделать в любом приложении? Извините, новичок здесь. – dangonfast
Спасибо, что сработало. Это было действительно «Ember.Route.reopen». Я немного изменил ваш ответ, чтобы сделать его более полным. – dangonfast