未捕获的TypeError:this.transitionTo不是路由中的函数

时间:2019-05-17 21:47:38

标签: javascript redirect ember.js

在我成功删除项目后,我试图将页面重定向到主页,但它告诉我transtranTo不是函数。

这是我的代码:

import Route from '@ember/routing/route';
import Ember from 'ember';
import { inject as service } from '@ember/service';

/**
 * @module lebtivity/routes/event
 */
export default Route.extend({
  /**
   * @type {Service}
   */
  api: service(),

  ajax: Ember.inject.service(),

  /**
   * @param {Object} params The parameters extracted from the URL.
   * @return {Promise<Object>}
   */
  model(params) {
    return this.get('api').request(`/events/${params.slug}`);
  },

  actions:{
    remove: function (model) {
        console.log(model.id);
        Ember.$.ajax({
               method: "DELETE",
               url: model.id,
               success: function(data)
               {
                 this.transitionTo('index');
               }
             })
    }
  }
});

2 个答案:

答案 0 :(得分:0)

您的问题可能是this不是您的想法。变量this的范围可能在promise成功内。

您可以做的就是在调用DELETE之前定义另一个变量

let that = this;

并使用

that.transitionTo('index')

答案 1 :(得分:0)

使用箭头功能。像这样编写您的操作和“成功”功能:

actions: {
    remove() {
        $.ajax({
           ...
           success: () => { 
               this.transitionTo('index')
           }
        });
    }
}