toggleDrawerState with Nativescript-telerik-ui 滑动抽屉

toggleDrawerState with Nativescript-telerik-ui slide drawer

我使用的是最新版本的 Telerik-Nativescript-UI(版本 1.3.1)。此更新版本应该支持操作栏重叠。我正在使用显示的示例 here 来重新处理我现有的抽屉实现。我遇到的问题是我曾经功能齐全的切换抽屉按钮在更新后不再工作。我试图调用 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"> 的 ID 来访问抽屉是不正确的,希望有人能指出正确的方向。

在您使用 RadSideDrawer 的 "show over ActionBar" 功能的情况下,您不再将 RadSideDrawer 添加到页面的 content,而是添加到 属性自定义 DrawerPage,这就是您不能再使用 Page 的 .getViewById() 方法的原因。在这种情况下,您可以简单地将 Page 转换为 DrawerPage 并直接使用其 sideDrawer 属性,即 XML 中声明的 RadSideDrawer。例如像这样:

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