2016-10-28 18 views
1

Nativescriptは本当に新しくなっています。 私はもっと多くのウェブブラウザが私のドロップダウンに感じたかったので、私はPeterStaevNativeScript DropDown widgetをGridLayoutと使っていました。そしてそれをスタイリングした。NativeScript - 別のUIエレメントを持つNativeScript DropDownウィジェットを開く

画像:

enter image description here

XML:

<GridLayout columns="*,auto" class="drop-down-menu" tap="{{ openDropDown }}"> 
    <dd:DropDown items="{{ items }}" selectedIndex="{{ selectedIndex }}" col="0" class="drop-down" /> 
    <Label text="&#xf078;" textWrap="false" col="1" class="font-awesome" /> 
</GridLayout> 

これまでの私の見解モデルファイル:

... 
import { DropDown } from 'nativescript-drop-down'; 

export class RegisterViewModel extends Observable { 
    ... 
    public openDropDown() { 
     console.log('I was tapped’); //this works 
    } 
} 

私のコードビハインド見つけるファイル(.TS)ので、遠:

... 
import { RegisterViewModel } from '../../viewmodels/register/register-view-model'; 

export function pageLoaded(args: EventData) { 
    let page = <Page>args.object; 
    page.bindingContext = new RegisterViewModel; 
} 

GridLayoutopenDropDown機能でドロップダウンウィジェットを開くようにします。 つまり、GridLayoutの領域全体が、フォントアイコンを含むドロップダウンメニューを開くことができるはずです。 これを達成するためのコードについては、本当に助けていただきありがとうございます。 より洗練されたソリューションです。

答えて

2

READMEにここで見つけるドロップダウンを開くための方法、とnativescript-ドロップダウンプラグインに発送しますhttps://github.com/PeterStaev/NativeScript-Drop-Down#methods

だから、あなたが必要なものをあなたの方法openDropDownのドロップダウンへの参照を取得することです。ドロップダウンUIコンポーネントにIDを割り当て、メソッドのドロップダウンを取得してから.open()を呼び出します。 これでドロップダウンが開きます。

以下のサンプルは、Pageというインスタンスが、というページのという変数に設定されていると仮定しています。コンポーネントを取得する他の方法もありますが、これは機能します。

public openDropDown(args: EventData) { 
    console.log('I was tapped’); //this works 
    let page = <Page>args.object; 
    let dropdown = <DropDown>page.getViewById('yourDropDid'); 
    dropdown.open(); 
} 
+1

驚くばかりです。ブラッド、ありがとう、これは働いた。あなたの答えを編集して、私が使った正確なコードを表示しました。 – Sam

+1

この場合の 'args.object'は' Page'ではなく、 'getViewById()'を引き続き呼び出すことができる 'GridLayout'ですが、型が正しいとは限りません。うまくいってうれしいよ:) –

+0

私が言ったように、私は新しいです。 :)将来の参照のために、より正確なバージョンのコードを編集してください。 – Sam

関連する問題