На 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 не исправит их веб-набор.