Вид борьбы с этим на данный момент, поскольку я не понимаю, почему это происходит. Я покажу вам контроллер.AngularJS 1.4 с ES6 Классы, это null
class ExampleClassController {
constructor($scope, serviceItem, PrepService, consts) {
// Services
this.serviceItem = serviceItem;
// Init Values
this.grid = PrepService;
this.dates = [
moment().format('x'),
moment().add(14, 'days').format('x')
];
// Works fine
console.log(this._init());
// Events
$scope.$on(consts.events.change, this._init);
}
_init() {
// this.grid = {};
// Returns null
console.log(this, "in the init");
return this.serviceItem.get().then((res) => this.grid = res);
}
}
Вот странная часть, когда я вызываю this._init внутри конструктора, это прекрасно. Возвращает обещание, как было предложено. Но когда я называю это в $ scope. $ On event, он просто разваливается и говорит, что это значение равно null. Я не могу понять, почему это происходит, поскольку, похоже, это не похоже на чей-либо пример. Все было бы полезно, просто понять, почему было бы здорово.
Спасибо!
Вы теряете ссылку на 'this' при использовании обратного вызова. Вы можете сделать 'this._init.bind (this)' в '$ scope. $ On' – Pierrickouw
Как вы знаете, использовать функцию стрелки в' _init'? '.then ((res) => this.grid = res);' - применить ту же логику к вашему 'constructor' – CodingIntrigue