在Ember.js中渲染模板并调用模型钩子

时间:2014-02-03 10:46:12

标签: ember.js

我正在使用JSON请求为名为example的模板填充模型。

App.ExampleRoute = Ember.Route.extend({
  model: function() {
    var url = "example/GetExamples";
    return Ember.$.getJSON(url).then(function(data) {
      return data;
    });
  }
});

示例模板完美呈现此数据。现在我的后端可能会不时更改,因为我有另一个名为addExample的模板。它只是向服务器发送一个JSON请求,以便从另一个模板中添加数据库中的条目。添加示例后,我尝试转换到示例模板,但我只看到旧数据。刷新页面时,会显示添加了条目的新数据。

App.AddController=Ember.Controller.extend({
  postAddRequest: function() {
    var request = $.post("/example/AddExample", {params});
    request.then(this.success.bind(this), this.failure.bind(this));
  },
  success: function(data) {
    this.transitionToRoute('example');
  }
});

所以有什么方法可以强制Ember重新渲染'example'模板并在路由中调用它的模型钩子而不刷新页面。我不能将ember-data用于持久性,因为它仍处于测试阶段。

1 个答案:

答案 0 :(得分:0)

转换到路线并发送您想要在路线上使用的数据。此外,路由应该在URL中使用id / slug。如果没有,请参阅下文

this.transitionToRoute('example', data);

如果您已经在路线上并且想要更新当前设置的控制器的模型,则可以获取该控制器并设置模型。

来自控制器

App.SomeController = Em.Controller.extend({
  needs: ['example']
  someFunction: function(){
    var model = ... get new model;
    this.get('controllers.example').set('model', model);
  }
});