1

我正在使用最新版本的 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();
};

显然试图通过附加 ID 来访问抽屉the<drawer:RadSideDrawer id="drawer">是不正确的,希望有人能指出我正确的方向。

4

1 回答 1

1

在您使用 RadSideDrawer 的“在 ActionBar 上显示”功能的场景中,您不再将 添加RadSideDrawer到 Page 的content属性中,而是添加到 custom 的属性中DrawerPage,这就是您不能再使用 Page 的.getViewById()方法的原因。在这种情况下,您可以简单地将 Page 转换为 DrawerPage 并直接使用其sideDrawer属性,即 XML 中声明的 RadSideDrawer。例如像这样:

SideDrawer.prototype.toggleDrawer = function() {
  var page = topmost().currentPage;
  page.sideDrawer.toggleDrawerState();
};
于 2016-12-02T12:31:17.980 回答