AngularJS компонент в ES6
Я создал компонент AngularJS в ES6 следующим образом:
import template from 'template.html'
class ctrler {
constructor ($scope, $cordovaDevice) {
$scope.title = 'This is from component'
this.$scope = $scope
document.addEventListener('deviceready', this.onDeviceReady)
}
onDeviceReady() {
console.log(this.$scope)
}
$onDestroy () {
document.removeEventListener('deviceready', this.onDeviceReady)
console.log('ctrler onDestroy');
}
}
const cpnt = {
template: template,
controller: ctrler
}
export { cpnt }
Мой вопрос в том, что $scope
и $cordovaDevice
являются локальным параметром в constructor(){}
, но я хочу, чтобы они стали глобальным параметром, поэтому я использую this.$scope = scope
, это не работает.
Как мне это сделать?
2 ответа
Я уверен, что проблема в том, как вы передаете обратный вызов document.addEventListener()
, Вы хотите связать this
в контекст контроллера, добавив вызов bind(this)
к методу, когда вы передаете его.
Попробуй это:
document.addEventListener('deviceready', this.onDeviceReady.bind(this));
Когда вы делаете это, this.$scope
будет правильно ссылаться на ctrler
"s this.$scope
когда ваш обратный вызов выполняется.
На самом деле, $scope
это не локальный параметр, это глобальный.
onDeviceReady()
функция является функцией обратного вызова слушателя события, так this.$scope
значит не ctrler.$scope
, Это проблема.
Спасибо за ответ и прочитайте мой вопрос.
Хорошего дня.