表格提交上的灰烬刷新路线

时间:2014-10-14 06:30:12

标签: javascript ember.js

我提交的其中一条烬路线中的表格我只需要新鲜,

App.PostController = Ember.ObjectController.extend({
    actions: {
      submit: function(e){
        var comment = this.get("ncomment");
        this.set("ncomment","");
        var self = this;
       $.post('/api/comment.php' , {comment : comment})
        .done(function(){
            self.refresh();
       });
      }
}
});

此代码给我一个错误 TypeError:self.refresh不是函数

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

对PostRoute进行操作,调用路由的refresh()方法并从控制器调用该操作。

像这样。

App.PostController = Ember.ObjectController.extend({
    actions: {
      submit: function(e){
        var comment = this.get("ncomment");
        this.set("ncomment","");
        var self = this;
       $.post('/api/comment.php' , {comment : comment})
        .done(function(){
            self.send('refreshRoute');
       });
      }
 }
});

App.PostRoute = Ember.Route.extend({
  actions: {
   refreshRoute:function(){
    this.refresh()
   }
  }
});

答案 1 :(得分:1)

要在具有相同型号的同一路线上再次输入,您需要在该路线上调用Em.Route.refresh方法。要从Em.Controller执行此操作,您需要访问该路由。通常,您可以通过this.get('target')(内部控制器)来完成。然后,控制器必须send动作来路由:this.get('target').send('actionName')(该动作必须在路由的动作哈希中)。

完整示例:

App.IndexRoute = Ember.Route.extend({
  actions: {
    refresh: function() {
      this.refresh();
    }
  }
});

App.IndexController = Ember.ObjectController.extend({
  actions: {
    ref: function(){
      this.get('target').send('refresh');
    }
  }
});

jsbin