如何在动作处理程序中引用路由?

时间:2016-01-31 06:44:48

标签: ember.js

我有一个项目列表和删除每个项目的能力,这是我执行此操作的动作处理程序:

 deleteProject: function(params) {
   this.store.findRecord('project', params).then(function(project) {
      project.deleteRecord();
      project.save();
      // this.transitionTo('projects');
    });
 }

我想要做的是重定向回显示项目列表的路线。正如您所看到的,我尝试使用this.transitionTo('projects')执行此操作,但它不起作用,因为this不再指向处理程序内的路由。

如何引用此route引用此处理程序以转换到另一个路由?

我正在使用Ember v.1.13

2 个答案:

答案 0 :(得分:1)

最简单的方法是关闭:

deleteProject: function(params) {
   var self = this;

   this.store.findRecord('project', params).then(function(project) {
      project.deleteRecord();
      project.save();
      self.transitionTo('projects');
   });
}

如果您使用带有转发器的ember-cli,也可以使用arrow function

deleteProject: function(params) {
   this.store.findRecord('project', params).then((project) => {
      project.deleteRecord();
      project.save();
      this.transitionTo('projects');
   });
}

答案 1 :(得分:0)

尝试以下代码。希望它有效。

deleteProject: function(params) {
  var deleteFlag = false;
  this.store.findRecord('project', params).then(function(project) {
    project.deleteRecord();
    project.save();
    deleteFlag = true;
  });

  if (deleteFlag) {
    this.transitionTo('projects');
  } else {
    ....
  }
}