【发布时间】:2017-01-15 15:58:16
【问题描述】:
我正在开发一个 TVML/TVJS 应用程序,并且在使用 Javascript 中的类时遇到了问题。
我的起始 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是application.js中定义的全局变量)
一开始一切正常。 getHomeScreen() 被调用,它设法调用 getRemoteJSON() 并将 _jsonLoaded() 作为回调传递。 getRemoteJSON 执行 AJAX 调用,然后运行回调。这就是问题发生的地方。进入 _jsonLoaded 后,“this”变为未定义,因此当我调用 this.getRemoteXMLFile 时,我收到错误消息“未定义不是对象(正在评估 'this.getRemoteXMLFile')”
为什么“this”在 getHomeScreen() 中有效,但在 _jsonLoaded() 中无效?如何从 _jsonLoaded() 访问我的 getRemoteXMLFile 函数?
感谢您的帮助。
【问题讨论】:
标签: javascript class tvml tvjs