Я использую контроллер для чтения значения, выбранного в выпадающем меню, для ввода параметров некоторых полей ввода и сохранения записи. Он создает запись и берет информацию просто отлично. Моя проблема заключается в том, что я пытаюсь перейти на другую страницу в конце действия. Я продолжаю получать ошибку: 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' не определено внутри функции обратного вызова. Есть десятки, если не сотни сообщений здесь о SO об этом. Самый простой способ - использовать функцию стрелки, как в '.then (() => this.transitionToRoute'. Другой подход - установить переменную' self' в верхней части функции и использовать ее. –
Одна коррекция , есть, вероятно, тысячи, но, честно говоря, это, вероятно, самая распространенная проблема с JavaScript. – Kingpin2k
Посмотрите на этот [ответ] (http://stackoverflow.com/questions/37097598/nesting-functions-in- js/37097783 # 37097783) – ykaragol