私は、コントローラを使用してドロップダウンメニューで選択された値を読み込み、いくつかの入力フィールドのパラメータを取り込み、レコードを保存しています。それはレコードを作成し、情報をうまく取り込みます。私の問題は、アクションの終わりに別のページに移行しようとするときです。私はエラーを取得し続ける:Cannot read property 'transitionToRoute' of undefined
this.transitionToRouteが私のコントローラで動作していませんEmber
私は完全に困惑しています。何か案は?ここで
は私のコントローラのコードである:ここで
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);
}
});
'this'はコールバック関数内では定義されていません。これについてはここに何百もの投稿があります。これを回避する最も簡単な方法は '.then(()=> this.transitionToRoute'のようにarrow関数を使うことです。もう一つの方法は関数の先頭に' self'変数を設定してそれを使う方法です。 –
一つの修正おそらく何千もの人がいるかもしれませんが、公正であるためには、おそらくJavaScriptを使用している人々がもっともよく抱える問題です。 – Kingpin2k
これを見てください[answer](http://stackoverflow.com/questions/37097598/nesting-functions-in- js/37097783#37097783) – ykaragol