Ошибка в документации Apple TVML? Функция pushPage не работает

ОБНОВЛЕНО 01.06.17 с правильным кодом, вставленным внизу.

Я работаю с руководством Apple TVML, раздел 2: Навигация между страницами. (https://developer.apple.com/library/content/documentation/TVMLKitJS/Conceptual/TVMLProgrammingGuide/NavigatingBetweenPages.html#//apple_ref/doc/uid/TP40016718-CH9-SW1)

Все в порядке до последней части (листинг 4-4), которая позволяет вам использовать кнопку меню на пульте дистанционного управления для возврата на предыдущую страницу. Всякий раз, когда я пытаюсь это сделать, мой образец приложения просто не загружается:

var baseURL;

function loadingTemplate() {
    var template = '<document><loadingTemplate><activityIndicator><text>Loading</text></activityIndicator></loadingTemplate></document>';
    var templateParser = new DOMParser();
    var parsedTemplate = templateParser.parseFromString(template, "application/xml");
    return parsedTemplate;
}

function getDocument(extension) {
    var templateXHR = new XMLHttpRequest();
    var url = baseURL + extension;
    var loadingScreen = loadingTemplate();

    templateXHR.responseType = "document";
    templateXHR.addEventListener("load", function() {pushPage(templateXHR.responseXML, loadingScreen);}, false);
    templateXHR.open("GET", url, true);
    templateXHR.send();
}

function pushPage(page, loading) {
var currentDoc = getActiveDocument();
    navigationDocument.replaceDocument(page, loading);
}

App.onLaunch = function(options) {
    baseURL = options.BASEURL;
    var extension = "templates/InitialPage.xml";
    getDocument(extension);
}

Что мне не хватает?


Это работает:

var baseURL;

function loadingTemplate() {
    var template = '<document><loadingTemplate><activityIndicator><text>Loading</text></activityIndicator></loadingTemplate></document>';
    var templateParser = new DOMParser();
    var parsedTemplate = templateParser.parseFromString(template, "application/xml");
    navigationDocument.pushDocument(parsedTemplate);
    return parsedTemplate;

}

function getDocument(extension) {
    var templateXHR = new XMLHttpRequest();
    var url = baseURL + extension;
    var loadingScreen = loadingTemplate();

    templateXHR.responseType = "document";
    templateXHR.addEventListener("load", function() {pushPage(templateXHR.responseXML, loadingScreen);}, false);
    templateXHR.open("GET", url, true);
    templateXHR.send();
}

function pushPage(page, loading) {
    navigationDocument.replaceDocument(page, loading);
}

App.onLaunch = function(options) {
    baseURL = options.BASEURL;
    var extension = "templates/InitialPage.xml";
    getDocument(extension);
}

person screaming drills    schedule 07.05.2017    source источник
comment
используя консоль ошибок javascript Safari, я получаю сообщение об ошибке: недопустимый аргумент для строки 23 (navigationDocument.replaceDocument (страница, загрузка);)   -  person screaming drills    schedule 16.05.2017


Ответы (1)


Да, я считаю, что это ошибка. Они должны были держать линию

navigationDocument.pushDocument(parsedTemplate);

в конце метода loadingTemplate.

Идея состоит в том, чтобы нажать загрузочную страницу, а затем заменить ее новой страницей.

Кстати, линия

var currentDoc = getActiveDocument();

не имеет здесь никакого дела. Этот код явно не тестировался и не рецензировался.

person Christophe    schedule 31.05.2017