Я работаю над приложением TVML/TVJS и столкнулся с проблемой при работе с классами в Javascript.Потеря доступа к функциям класса JS при выполнении обратного вызова
моей отправной application.js файл вызывает функцию
resourceLoader = new ResourceLoader();
resourceLoader.getHomeScreen();
У меня есть отдельный файл с именем ResourceLoader.js следующим:
class ResourceLoader {
getHomeScreen() {
var homeData = BASEURL + "/home.json";
var homeTemplate = BASEURL + "/home.tvml";
this.getRemoteJSON(homeData, homeTemplate, this._jsonLoaded);
}
_jsonLoaded(template, jsonString) {
var parsedJSON = JSON.parse(jsonString);
this.getRemoteXMLFile(template, parsedJSON);
}
getRemoteJSON(file, template, callback) {
var xhr = new XMLHttpRequest();
xhr.responseType = "text";
xhr.addEventListener("load", function() {
callback(template, xhr.responseText);
}, false);
xhr.open("GET", file, true);
xhr.send();
}
getRemoteXMLFile(template, json) {
var xhr = new XMLHttpRequest();
xhr.responseType = "xml";
xhr.addEventListener("load", function() {
loadRemoteFile(xhr.responseText, json);
}, false);
xhr.open("GET", template, true);
xhr.send();
}
}
(BaseUrl является глобальной переменной, определенной в приложении. js)
Все работает нормально в начале. Вызывается getHomeScreen(), ему удается вызвать getRemoteJSON() и передать _jsonLoaded() в качестве обратного вызова. getRemoteJSON выполняет вызов AJAX, а затем запускает обратный вызов. Именно здесь возникает проблема. Когда-то внутри _jsonLoaded, «this» становится неопределенным, поэтому, когда я вызываю this.getRemoteXMLFile, я получаю сообщение об ошибке «undefined не является объектом (оценка« this.getRemoteXMLFile »)»
Почему «это» работает в getHomeScreen(), но не в _jsonLoaded()? Как я могу получить доступ к моей функции getRemoteXMLFile из _jsonLoaded()?
Спасибо за любую помощь.