toggleDrawerState с выдвижным ящиком Nativescript-telerik-ui

Я использую новейшую версию Telerik-Nativescript-UI (версия 1.3.1). Эта обновленная версия должна поддерживать перекрытие панели действий. Я использую показанный пример здесь, чтобы переработать мою существующую реализацию ящика. Проблемы, с которыми я сталкиваюсь, заключаются в том, что моя когда-то полностью функционирующая кнопка переключения ящика больше не работает после обновления. Я пытаюсь вызвать toggleDrawerState(), чтобы справиться с этим, но это не удается, когда я пытаюсь получить ссылку на ящик. Моя другая проблема заключается в том, что содержимое ящика больше не загружается из моего каталога виджетов. Вот пример моего кода ниже.

Представление XML

  <dpg:DrawerPage
    navigatedTo="onNavigatedTo"
    navigatingTo="navigatingTo"  
    xmlns:dpg="nativescript-telerik-ui/sidedrawer/drawerpage"
    xmlns:drawer="nativescript-telerik-ui/sidedrawer"
    xmlns:widgets="shared/widgets"
    xmlns="http://www.nativescript.org/tns.xsd">

  <page.actionBar>
    <action-bar title="{{L('connections')}}">
      <!--<NavigationButton  icon="res://back" tap="goBack" ios:visibility="collapsed" />      -->
      <NavigationButton  icon="res://menu" tap="toggleDrawer" ios:visibility="collapsed" />
      <action-bar.actionItems>
        <ios>
          <action-item icon="res://ic_menu" ios.position="left" tap="toggleDrawer" />
        </ios>
      </action-bar.actionItems>
    </action-bar>
  </page.actionBar>

  <dpg:DrawerPage.sideDrawer id="">
    <drawer:RadSideDrawer id="drawer">
      <drawer:RadSideDrawer.drawerContent>
        <widgets:drawer-content />
      </drawer:RadSideDrawer.drawerContent>
    </drawer:RadSideDrawer> 
  </dpg:DrawerPage.sideDrawer>

    <StackLayout cssClass="mainContent">
        <Label text="test test test" textWrap="true" cssClass="drawerContentText"/>

    </StackLayout>
</dpg:DrawerPage>

JS, где я пытаюсь переключить ящик

SideDrawer.prototype.toggleDrawer = function() {
  var page = topmost().currentPage;
  page.getViewById("drawer").toggleDrawerState();
};

Очевидно, пытаться получить доступ к ящику, прикрепив идентификатор к the<drawer:RadSideDrawer id="drawer">, неправильно, надеясь, что кто-то может указать мне правильное направление.


person Stavros_S    schedule 30.08.2016    source источник
comment
Вы можете просмотреть код в этом примере — github.com/telerik/nativescript-ui-samples/tree/release/sdk/app/, где показано, как можно использовать функцию перекрытия ActionBar.   -  person Nikolay Tsonev    schedule 31.08.2016
comment
@NikolayTsonev У меня есть, но он не показывает, как правильно использовать метод toggleDrawerStateMethod. Основываясь на приведенном выше коде, я не понимаю, почему моя текущая реализация функции переключения не работает. Должен ли я получить доступ к ящику другим способом?   -  person Stavros_S    schedule 31.08.2016


Ответы (1)


В сценарии, где вы используете функцию «показать над ActionBar» RadSideDrawer, вы больше не добавляете RadSideDrawer к content страницы, а к свойству пользовательского DrawerPage, поэтому вы больше не можете использовать метод страницы .getViewById(). В этом сценарии вы можете просто привести страницу к DrawerPage и напрямую использовать ее свойство sideDrawer, которое является объявленным RadSideDrawer в XML. Например вот так:

SideDrawer.prototype.toggleDrawer = function() {
  var page = topmost().currentPage;
  page.sideDrawer.toggleDrawerState();
};
person Vladimir Amiorkov    schedule 02.12.2016