2

ネイティブ スクリプトに telerik ui を使用しています。サイドメニューを開くには、上部にトグルボタンが必要です。Showdrawer()しかし、ドキュメントに従って呼び出すことができません。私が必要とするのは、ボタンをクリックしてサイドメニューを開くことです。を呼び出してみ RadSideDrawer.prototype.showDrawer()ましたが、失敗しました。他に利用できるサイドメニューはありますNativescriptか?

メインページ.xml

<Page xmlns="http://www.nativescript.org/tns.xsd" xmlns:drawer="nativescript-telerik-ui/sidedrawer" loaded="pageLoaded">
    <Page.actionBar>
        <ActionBar>
            <android>
                <NavigationButton text="Go Back" android.systemIcon="ic_menu_moreoverflow" tap="showSideDrawer" />
            </android>
        </ActionBar>
    </Page.actionBar>
    <drawer:RadSideDrawer>
        <drawer:RadSideDrawer.mainContent>
            <StackLayout>
                <Label text="{{ mainContentText }}" textWrap="true" />
            </StackLayout>
        </drawer:RadSideDrawer.mainContent>
        <drawer:RadSideDrawer.drawerContent>
            <StackLayout cssClass="drawerContent" style="background-color:white;">
                <StackLayout cssClass="headerContent">
                    <Label text="Header" />
                </StackLayout>
                <StackLayout cssClass="drawerMenuContent">
                    <Label text="Item 1" style="color:black;" />
                    <Label text="Item 2" style="color:black;" />
                    <Label text="Item 3" style="color:black;" />
                    <Label text="Item 4" style="color:black;" />
                </StackLayout>
            </StackLayout>
        </drawer:RadSideDrawer.drawerContent>
    </drawer:RadSideDrawer>
</Page>

はじめに-model.js

var observableModule = require("data/observable");
var GettingStartedViewModel = (function (_super) {
    __extends(GettingStartedViewModel, _super);
    function GettingStartedViewModel() {
        _super.call(this);
        this.set("mainContentText", "SideDrawer for NativeScript can be easily setup in the XML definition of your page by defining main- and drawer-content. The component"
            + " has a default transition and position and also exposes notifications related to changes in its state.");

    }
    return GettingStartedViewModel;
})(observableModule.Observable);
exports.GettingStartedViewModel = GettingStartedViewModel;
function showSideDrawer(args) {
    console.log("Show SideDrawer tapped.");
    // Show sidedrawer ...
   _super.prototype.showDrawer.call(this);

}
exports.showSideDrawer = showSideDrawer;

メインページ.js

var viewModelModule = require("./getting-started-model");
function pageLoaded(args) {
    console.log("Page loaded");
    var page = args.object;
    page.bindingContext = new viewModelModule.GettingStartedViewModel();
}
exports.pageLoaded = pageLoaded;
4

4 に答える 4

2

RadSideDrawer の主な機能を示すこの SDK の例を見ることができます。@R Pelzer が述べたように、必要なことは、たとえば id を使用して RadSideDrawer のインスタンスを取得することだけです。

import drawerModule = require("nativescript-telerik-ui-pro/sidedrawer");
import frameModule = require("ui/frame");

var sideDrawer: drawerModule.RadSideDrawer = <drawerModule.RadSideDrawer>(frameModule.topmost().getViewById("sideDrawer"));

showDrawer()そしてそのメソッドを呼び出します:

sideDrawer.showDrawer();
于 2016-05-08T10:09:19.280 に答える
1

投稿していないコードから showSideDrawer 関数を呼び出していますか? タップボタンをリンクしましたか?

<Button tap="showSideDrawer" text="ToggleDrawer"/>

sideDrawer に Id を与えて、このコードを使用してみてください。

var drawer = frameModule.topmost().getViewById("sideDrawer");
drawer.showDrawer();
于 2016-05-06T11:12:43.103 に答える
1

引き出しにIDが割り当てられてundefinedいないため、問題を解決するためにsideDrawerにIDを割り当ててから<drawer:RadSideDrawer id="sideDrawer"> 呼び出すことができます

var frame = require('ui/frame');
var drawer = frame.topmost().getViewById("sideDrawer");

function showSideDrawer(){
drawer.showDrawer();  // i prefer using .toggleDrawerState();
};
于 2016-05-09T13:30:59.153 に答える