Ember.js 此.transitionToRoute在我的控制器余烬中不工作

Ember.js 此.transitionToRoute在我的控制器余烬中不工作,ember.js,ember-data,Ember.js,Ember Data,我使用一个控制器读取下拉菜单上选择的值,获取一些输入字段的参数,然后保存记录。它会创建记录并很好地接收信息。我的问题在于,当我试图在动作结束时转换到另一个页面时。我不断收到错误:无法读取未定义的属性“TransitionRoute” 我完全被难住了。有什么想法吗 这是我的控制器代码: var teamId; export default Ember.Controller.extend({ auth: Ember.inject.service(), actions: {

我使用一个控制器读取下拉菜单上选择的值,获取一些输入字段的参数,然后保存记录。它会创建记录并很好地接收信息。我的问题在于,当我试图在动作结束时转换到另一个页面时。我不断收到错误:
无法读取未定义的属性“TransitionRoute”

我完全被难住了。有什么想法吗

这是我的控制器代码:

var teamId;
export default Ember.Controller.extend({
    auth: Ember.inject.service(),
    actions: {
        onSelectEntityType: function(value) {
         console.log(value);
         teamId = value;
         return value;
      },
      createProcess: function(processName, processDescription) {
        var currentID = this.get('auth').getCurrentUser();
        let team = this.get('store').peekRecord('team', teamId);
        let user = this.get('store').peekRecord('user', currentID);
        let process = this.get('store').createRecord('process', {
            team: team,
            user: user,
            name: processName,
            description: processDescription
        });
        process.save().then(function () {
        this.transitionToRoute('teams', teamId);
      });
    }

    }
});
以下是相应的路线:

export default Ember.Route.extend({
    auth: Ember.inject.service(),
    model: function() {
        var currentID = this.get('auth').getCurrentUser();
        return this.store.find('user', currentID);
    }
});

您应该清楚地了解Javascript中的这个关键字。关键字this仅取决于函数的调用方式,而不是定义函数的方式/时间/地点

function foo() {
    console.log(this);
}

// normal function call
foo(); // `this` will refer to `window`

// as object method
var obj = {bar: foo};
obj.bar(); // `this` will refer to `obj`

// as constructor function
new foo(); // `this` will refer to an object that inherits from `foo.prototype`
请查看以了解更多信息

您可以将this缓存在正常变量this中,然后在回调中访问

var self = this;

process.save().then(function () {
  self.transitionToRoute('teams', teamId);
});
ECMASCript 6引入了箭头函数,其作用域是词汇范围。在这里,这就像一个普通变量一样在范围内查找

process.save().then(() => {
  this.transitionToRoute('teams', teamId);
});

您应该清楚地了解Javascript中的这个关键字。关键字this仅取决于函数的调用方式,而不是定义函数的方式/时间/地点

function foo() {
    console.log(this);
}

// normal function call
foo(); // `this` will refer to `window`

// as object method
var obj = {bar: foo};
obj.bar(); // `this` will refer to `obj`

// as constructor function
new foo(); // `this` will refer to an object that inherits from `foo.prototype`
请查看以了解更多信息

您可以将this缓存在正常变量this中,然后在回调中访问

var self = this;

process.save().then(function () {
  self.transitionToRoute('teams', teamId);
});
ECMASCript 6引入了箭头函数,其作用域是词汇范围。在这里,这就像一个普通变量一样在范围内查找

process.save().then(() => {
  this.transitionToRoute('teams', teamId);
});

在回调函数中未定义。这里有几十篇,如果不是几百篇的话,关于这件事的帖子。解决这个问题的最简单方法是使用箭头函数,如
=>这个.TransitionRoute
。另一种方法是在函数顶部设置一个
self
变量并使用它。一个修正,可能有数千个,但公平地说,这可能是JavaScript最常见的问题。看看这个,否决票是什么?对我来说是个好问题!
这个
是回调函数内部未定义。这里有几十篇(如果不是几百篇)关于此的帖子。解决此问题的最简单方法是使用箭头函数,如
。然后()=>这个.TransitionRoute
。另一种方法是在函数顶部设置一个
self
变量并使用它。一个更正,可能有数千个,但公平地说,这可能是人们使用JavaScript时最常见的问题。看看这个,否决票是怎么回事?对我来说这是个好问题!谢谢你。这对我理解这件事很有帮助谢谢你,这对我理解这件事很有帮助