Onsen UI 2.0 Splitter и pushPage не работают вместе

Я сделал главную вкладку (tab1.html), где у вас есть меню для изменения параметров или перехода к настройкам... Теперь я хочу, чтобы вы могли нажать кнопку на главной вкладке (tab1.html), чтобы перейти к другому ( tab4.html). Проблема в том, что он не работает вместе, поэтому меню (разделитель) и функция pushpage; / Как это решить? Разделитель для меню:

<ons-splitter>
<ons-splitter-side id="menu" side="left" width="220px" collapse swipeable>
<ons-page>
  <ons-list>
    <ons-list-item onclick="fn.load('tab1.html')" tappable>
      <ons-icon icon="home" style="color: #1e88e5;"></ons-icon><p  style="opacity: 0.6;">&nbsp;&nbsp;&nbsp;Startseite</p>
    </ons-list-item>
    <ons-list-item onclick="fn.load('tab6.html')" tappable>
      <ons-icon icon="user" style="color: #1e88e5;"></ons-icon><p style="opacity: 0.6;">&nbsp;&nbsp;&nbsp;Mein Profil</p>
    </ons-list-item>
    <ons-list-item onclick="fn.load('tab8.html')" tappable>
      <ons-icon icon="sliders" style="color: #1e88e5;"></ons-icon><p style="opacity: 0.6;">&nbsp;&nbsp;&nbsp;Einstellungen</p>
    </ons-list-item>
  </ons-list>
</ons-page>
</ons-splitter-side>
<ons-splitter-content id="content" page="tab1.html"></ons-splitter-content>
</ons-splitter>

И навигатор, откуда вы должны попасть на 4 страницу:

<ons-navigator id="pushpage_navigator" page="tab1.html"></ons-navigator>

Затем tab1.html:

<ons-template id="tab1.html">
<ons-page> 
<div class="left"> <!--left-->
  <ons-toolbar-button onclick="fn.open()">
    <ons-icon icon="md-menu"></ons-icon>
  </ons-toolbar-button>
</div>
<button onclick="change()" />
</ons-page>

И tab4.html, где вы должны прийти из tab1.html:

<ons-template id="tab4.html">
<ons-page>
<ons-toolbar>
  <div class="left"><ons-back-button>Back</ons-back-button></div>
  <div class="center">Uhrzeitenansicht</div>
 </ons-toolbar>
 </ons-page>
 </ons-template>

И, наконец, javascript:

//ONSEN UI 2.0
window.fn = {};

window.fn.open = function() {
  var menu = document.getElementById('menu');
  menu.open();
};

window.fn.load = function(page) {
  var content = document.getElementById('content');
  var menu = document.getElementById('menu');
  content.load(page)
 .then(menu.close.bind(menu));
};

function change()
{
  var myNavigator = document.getElementById('pushpage_navigator');
  myNavigator.pushPage('tab4.html');
}

Если вы установите тег on-navigator перед сплиттером, сплиттер не будет работать. Если вы установите его после него, вы получите такие ошибки, как: myNavigator имеет значение null или pushPage уже запущен.


person Tim Jansen    schedule 20.09.2016    source источник


Ответы (1)


Мне кажется, что у вас могут быть проблемы с вложением двух элементов (разделителя и навигатора). Оба они должны действовать как контейнеры для реальных страниц. Поэтому, если вы хотите использовать оба, вы должны поместить один в другой.

Если у вас есть что-то вроде:

<ons-navigator id="pushpage_navigator">
  <ons-page>
    <ons-splitter>
      <ons-splitter-side id="menu" side="left" width="220px" collapse swipeable>
        <ons-page>
          <ons-list>
            <ons-list-item onclick="fn.load('tab1.html')" tappable>1</ons-list-item>
            <ons-list-item onclick="fn.load('tab6.html')" tappable>6</ons-list-item>
            <ons-list-item onclick="fn.load('tab8.html')" tappable>8</ons-list-item>
          </ons-list>
        </ons-page>
      </ons-splitter-side>
      <ons-splitter-content id="content" page="tab1.html"></ons-splitter-content>
    </ons-splitter>
  </ons-page>
</ons-navigator>

Таким образом, у вас с самого начала будет доступ как к сплиттеру, так и к навигатору. Демо.

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

person Ilia Yatchev    schedule 20.09.2016
comment
да работает но нет анимации между переключением с таб1 на таб4 и не появляется клавиша бэк? : - person Tim Jansen; 21.09.2016
comment
Я добавил ссылку на демо. Я вижу там и анимацию, и кнопку возврата. Переключение с tab1 на tab4 с помощью pushPage должно иметь анимацию — может быть, вы случайно вызываете fn.load? Если вы хотите, вы можете разветвить и изменить демо, чтобы я мог понять, почему вы получаете разные результаты :) - person Ilia Yatchev; 22.09.2016
comment
Я только что вставил весь свой HTML-код в ваш код, и он не показывает анимацию и обратный ключ. codepen.io/anon/pen/pEREKK?&editors=101 Ваша функция ' change ()» запустится, когда вы нажмете на вопрос в правом нижнем углу. Пожалуйста, попробуйте исправить это ;) PS: Некоторые файлы не загружаются из-за отсутствия javascript, но это не важно, ошибка должна быть в моем HTML - person Tim Jansen; 22.09.2016
comment
Хорошо - я нашел проблему - если вы посмотрите на код, который я предоставил, структура будет ons-navigator > ons-page > ons-splitter - в вашей версии вы забыли ons-page в середине. Из-за этого пользовательский интерфейс Onsen считает, что вторая страница, которую вы загружаете (вкладка 4), является последней, и поэтому он удаляет кнопку «Назад», поскольку последняя страница в стеке не нуждается в кнопке «Назад». Просто добавьте ons-страницу, и все будет в порядке. Демо - person Ilia Yatchev; 22.09.2016