我正在使用 Ember.JS 编写一个 CRUD 应用程序:
我想使用相同的模板来显示/编辑现有模型对象并创建一个新模型。
这是我使用的路由器代码。
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();
}
}
});
问题是当我第一次显示一个 Action ,然后回来创建一个新的时,看起来模板没有使用新创建的记录,而是使用之前显示的记录。
我的解释是 Controller 和模板不同步。
你会怎么做?
也许有更简单的方法来实现这一目标?
这是一个带有代码的 JSBin:http://jsbin.com/owiwak/10/edit
最佳答案
通过说 this.render('action')
,您不仅仅是告诉它使用 action
模板,还有ActionController
,实际上您想要 action
模板,但使用 ActionNewController
.
您需要覆盖:
this.render('action', {
controller: 'actions.new'
});
Updated JS Bin .
关于ember.js - 用于显示/编辑和创建的相同 Ember.JS 模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15200281/