Нокаут, наблюдаемый о свойстве объекта со значением метода, терпит неудачу на IOS 11.3 (FIX) - PullRequest
0 голосов
/ 01 мая 2018

На IOS 11.3 произошел сбой нашего продукта с общей «возникшей проблемой». Он будет работать нормально при подключении к удаленному отладчику на MAC, что затруднит поиск причины. Я потратил немало времени, чтобы выяснить истинную причину. Это было трудно, потому что мы используем огромную внутреннюю структуру, написанную с knockout.js, которая минимизирована и размещена на IOT-устройстве, доступ к которому осуществляется через собственную сеть, предоставляемую нашим собственным пленным порталом. Отладка здесь практически невозможна, так как работа сервера в режиме отладки демонстрирует другое поведение сервера.

Я хотел опубликовать это, на всякий случай, если у кого-то есть / будет похожая проблема.

В нашем веб-приложении есть боковая панель навигации с гиперссылками, которые заполняются наблюдаемой, к которой данные прикрепляются путем вызова другого модуля модели представления, например, так.

 mainNavigationSection(
     createNavigationMenuVm(
        mainTree.views() || [],
        newSelectedFolder));

Модуль модели представления, вызываемый внутри, имеет наблюдаемую область, в которой есть необходимые данные. Таким образом, мы имеем наблюдаемую mainNavigationSection (), прикрепленную к объекту со значением свойства функции, конструкция которой содержит необходимые данные в параметре выбивания _latestValue. IOS 11.3 почему-то не может интерпретировать это, когда такая наблюдаемая вызывается внутри шаблона.

naviagtionbar.jade

li(data-bind="template: { name: 'navigation.navigationSection-jade', data: mainNavigationSection() }", class="css-treeview")

navigation.navigationSection.jade

ul(data-bind="foreach: navigationItems")
// ko template: { name: 'navigation.navigationItem-jade', data: $data }
// /ko

Когда домен загружается на устройство IOS 11.3, он ломается здесь и пытается перезагрузить страницу и, в конце концов, выдает общее сообщение «проблема неоднократно возникала».

FIX Лучше сказать, что это лейкопластырь. Фактическое исправление должно быть сделано на стороне IOSwebkit.

Когда я изменяю наблюдаемое, чтобы присоединиться вот так, все работает нормально.

var navModel = createNavigationMenuVm(
                mainTree.views() || [],
                newSelectedFolder);
var navMenu = {
    navigationItems: navModel.navigationItems._latestValue
};
mainNavigationSection(navMenu);

Надеюсь, это кому-нибудь поможет, пока Apple не исправит их веб-набор.

...