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);
      }
    }
  }
});