Я пишу приложение CRUD, используя Ember.JS:
- Отображается список «действий»;
- Пользователь может щелкнуть одно действие, чтобы отобразить его, или щелкнуть кнопку, чтобы создать новое действие.
Я хотел бы использовать один и тот же шаблон для отображения/редактирования существующего объекта модели и создания нового.
Вот код маршрутизатора, который я использую.
App = Ember.Application.create();
App.Router.map(function() {
this.resource('actions', {path: "/actions"}, function() {
this.resource('action', {path: '/:action_id'});
this.route('new', {path: "/new"});
});
});
App.IndexRoute = Ember.Route.extend({
redirect: function() {
this.transitionTo('actions');
}
});
App.ActionsIndexRoute = Ember.Route.extend({
model: function () {
return App.Action.find();
}
});
App.ActionRoute = Ember.Route.extend({
events: {
submitSave: function () {
this.get("store").commit();
}
}
});
App.ActionsNewRoute = Ember.Route.extend({
renderTemplate: function () {
this.render('action');
},
model: function() {
var action = this.get('store').createRecord(App.Action);
return action;
},
events: {
submitSave: function () {
this.get("store").commit();
}
}
});
Проблема в том, что когда я сначала отображаю действие, а затем возвращаюсь, чтобы создать новое, похоже, что шаблон не использует вновь созданную запись, а вместо этого использует ту, которая отображалась ранее.
Моя интерпретация заключается в том, что контроллер и шаблон не синхронизированы. Как бы Вы это сделали? Может быть, есть более простой способ добиться этого?
Вот JSBin с кодом: http://jsbin.com/owiwak/10/edit