所以我得到了我的application.js,它可以自己加载一个TVML模板。 我想要实现的是,使用ResourceLoader.js打开TestTemplate.xml.js,而不是将其硬编码到application.js中。
毕竟我完成了它不工作。只有在application.js里面我才能看到模板。当我评论以下行时,我得到一个空白屏幕,当我取消它时,我想我的TestTemplate.xml.js无效。我需要做什么,从TestTemplate.xml.js获取我的模板,而不是从application.js中获取。
我遵循了这个指南:https://www.raywenderlich.com/114886/beginning-tvos-development-with-tvml-tutorial
application.js:
var resourceLoader;
App.onLaunch = function(options)
{
var javascriptFiles =
[
`${options.BASEURL}js/ResourceLoader.js`,
`${options.BASEURL}js/Presenter.js`
];
evaluateScripts(javascriptFiles, function(success)
{
if(success)
{
var alert = createAlert("Test Title", ""); //This line
Presenter.modalDialogPresenter(alert);
resourceLoader = new ResourceLoader(options.BASEURL);
resourceLoader.loadResource(`${options.BASEURL}templates/TestTemplate.xml.js`, function(resource)
{
var doc = Presenter.makeDocument(resource);
Presenter.pushDocument(doc);
});
}
else
{
var errorDoc = createAlert("Evaluate Scripts Error", "Error attempting to evaluate external JavaScript files.");
navigationDocument.presentModal(errorDoc);
}
});
}
var createAlert = function(title, description)
{
var alertString = `<?xml version="1.0" encoding="UTF-8" ?>
<document>
<alertTemplate>
<title>${title}</title>
<description>${description}</description>
<button>
<text>OK</text>
</button>
</alertTemplate>
</document>`
var parser = new DOMParser();
var alertDoc = parser.parseFromString(alertString, "application/xml");
return alertDoc
}
Presenter.js:
var Presenter =
{
makeDocument: function(resource)
{
if(!Presenter.parser)
{
Presenter.parser = new DOMParser();
}
var doc = Presenter.parser.parserFromString(resource, "application/xml");
return doc;
},
modalDialogPresenter: function(xml)
{
navigationDocument.presentModal(xml);
},
pushDocument: function(xml)
{
navigationDocument.pushDocument(xml);
},
}
ResourceLoader.js:
function ResourceLoader(baseurl) {
this.BASEURL = baseurl;
}
ResourceLoader.prototype.loadResource = function(resource, callback) {
var self = this;
evaluateScripts([resource], function(success) {
if(success) {
var resource = Template.call(self);
callback.call(self, resource);
} else {
var title = "Resource Loader Error",
description = `Error loading resource '${resource}'. \n\n Try again later.`,
alert = createAlert(title, description);
navigationDocument.presentModal(alert);
}
});
}
TestTemplate.xml.js:
var Template = function()
{
return `<?xml version="1.0" encoding="UTF-8" ?>
<document>
<catalogTemplate>
<banner>
<title>Test Template</title>
</banner>
</catalogTemplate>
</document>`
}