2016-05-06 16 views
1

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

メインpage.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; 

メインpage.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; 

答えて

1

あなたがコードからshowSideDrawer関数を呼び出しています投稿しませんでしたか?タップボタンをリンクしてもよろしいですか?

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

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

var drawer = frameModule.topmost().getViewById("sideDrawer"); 
drawer.showDrawer(); 
+0

呼び出すことができますので、あなたの問題はsideDrawer <drawer:RadSideDrawer id="sideDrawer">にIDを割り当てる修正するために、引き出しに割り当てられていなかった - http://docs.telerik.com/de vtools/nativescript-ui/Controls/NativeScript/SideDrawer/getting-started。 –

+0

main-page.jsには( "./ getting-started-model")が必要で、あなたのページはメインページモデルと呼ばれます。これは障害を引き起こす可能性がありますか? –

+0

申し訳ありませんが、それはtypoです。それは問題ではないと思われます –

2

RadSideDrawerの主な機能を示すthis SDK examplesをご覧ください。

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(); 
+0

私はproバージョンを使用していないと私は正しいインポートがtypescriptで動作し、javascript.anyhowを使用している場合は知っていないがこの答えは方法だと思われるが、初心者のデバッグエラーは、 'エラーは私の道に沿って来る。 –

+0

こんにちは 'require()'がエラーを出している場合は、必要なjsライブラリがすべて{N}アプリケーションに存在することを確認してください。詳細はこちら[こちら](http://stackoverflow.com/questions/23603514/javascript-require-function-giving-referenceerror-require-is-not-defined)をご覧ください。 proバージョンについては、sideDrawer.showDrawer()を呼び出すときに 'require'を' require( "nativescript-telerik-ui/sidedrawer") ' –

+0

に変更するだけです。 show drawerはfuction.whenではないと言っています。sideDrawer.RadSideDrawer.prototype.showDrawer();を試しました。エラーは発生しませんが、何も起こりません。 –

1

あなたはのでundefinedを取得している@R Pelzerで述べたようにあなたがする必要があるすべては、そのIDを使用することによって、たとえばRadSideDrawerのインスタンスを取得することです何のidは、あなたが使用しています

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

function showSideDrawer(){ 
drawer.showDrawer(); // i prefer using .toggleDrawerState(); 
}; 
+0

私はこれを試しましたが、何も起こりません、エラーは表示されません。 –

+1

うん、それは働いた。 –

関連する問題