Ember.js Emberjs:如何在创建模型后刷新父模板
我正在构建一个具有以下代码的应用程序: 路线:Ember.js Emberjs:如何在创建模型后刷新父模板,ember.js,Ember.js,我正在构建一个具有以下代码的应用程序: 路线: App.Router.map(function() { this.resource('gradebooks', function() { this.resource('gradebook', { path: ':gradebook_id' }); }); }); App.IndexRoute = Em.Route.extend({ redirect: function() { this.transitionTo('gr
App.Router.map(function() {
this.resource('gradebooks', function() {
this.resource('gradebook', { path: ':gradebook_id' });
});
});
App.IndexRoute = Em.Route.extend({
redirect: function() {
this.transitionTo('gradebooks');
}
})
App.GradebooksRoute = Em.Route.extend({
setupController: function(controller, model) {
Em.$.getJSON('/data/gradebooks/get', function(data) {
controller.set('model', data);
});
}
});
App.GradebookRoute = Em.Route.extend({
model: function(params) {
var id = params.gradebook_id;
return Em.$.getJSON('/data/gradebooks/get/' + id);
}
})
控制器:
App.GradebooksController = Em.ArrayController.extend({
isActive: false,
actions: {
createGradebook: function(newTitle) {
var self = this;
if(newTitle.trim()) {
Em.$.get('/data/gradebooks/add/' + newTitle, {}, function(json) {
Em.$('#create-gradebook-modal').modal('hide').find('input').val('');
self.transitionToRoute('gradebook', json.id);
}, 'json');
}
}
}
});
模板(成绩册.hbs):
创建成绩册
{{{#各}
-
{{{链接到“成绩册”{u id}
{{title}}
{{/链接到}
{{/每个}}
{{outlet}}
模板(成绩册.hbs):
{{title}{{{u id}
改名
废物箱
我遇到的问题是在成绩册控制器.actions.createGradebook
下,我发送一个创建模型的请求,然后转换到我刚刚创建的成绩册。创建和转换工作正常,但我希望侧栏(gradebooks.hbs)
显示新创建的成绩册
我认为这与更新
路线中的模型有关。创建成绩册后,如何让它再次从服务器获取模型。要详细说明@fanta的评论,您需要执行以下操作:
App.GradebooksController = Em.ArrayController.extend({
isActive: false,
actions: {
createGradebook: function(newTitle) {
var self = this;
if(newTitle.trim()) {
var gradebook = Em.$.getJSON('/data/gradebooks/add/' + newTitle, {}, function(json) {
Em.$('#create-gradebook-modal').modal('hide').find('input').val('');
self.transitionToRoute('gradebook', json.id);
}, 'json');
self.get('content').pushObject(gradebook);
}
}
}
});
创建成绩册后,将其推送到成绩册内容。除了一些小的编辑外,效果非常好<代码>this.get('content').pushObject(成绩册)
需要是self.get…
并且在getJSON
回调中。
<h1>{{title}} <small>{{_id}}</small></h1>
<div class="btn-container">
<button class="btn btn-default"><i class="fa fa-pencil"></i> Rename</button>
<button class="btn btn-danger"><i class="fa fa-trash-o"></i> Trash</button>
</div>
App.GradebooksController = Em.ArrayController.extend({
isActive: false,
actions: {
createGradebook: function(newTitle) {
var self = this;
if(newTitle.trim()) {
var gradebook = Em.$.getJSON('/data/gradebooks/add/' + newTitle, {}, function(json) {
Em.$('#create-gradebook-modal').modal('hide').find('input').val('');
self.transitionToRoute('gradebook', json.id);
}, 'json');
self.get('content').pushObject(gradebook);
}
}
}
});