2016-08-31 5 views
2

NativeScriptでUIプラグインのカスタムイベントを定義するためには何が必要ですか?私は基本的にやったことはつまるところNativeScript UIプラグインにカスタムイベントを追加する方法

<Page xmlns="http://schemas.nativescript.org/tns.xsd" 
     xmlns:fooplugin="nativescript-foo-plugin"> 
    <StackLayout> 
    <Button text="Tap Me!" tap="{{ onTap }}" /> 
    <fooplugin:FooPlugin foo="{{ onFoo }}" /> 
    </StackLayout> 
</Page> 

私は何を達成しようとしていることButtontapイベントに似ていますし、次のようにフックすることができfooイベントをトリガすることですプラグインコード(メモリリークの考慮を無視する)内からfooeventName値とnotify関数を呼び出す:

import * as view from 'ui/core/view'; 

export class FooPlugin extends view.View { 
    constructor() { 
    super(); 

    setTimeout(() => { 
     this.notify({ 
     eventName: 'foo', 
     object: this, 
     }); 

     // also tried this._emit('foo'); 
    }, 1000); 
    } 
} 

がSで私が行方不明で、私がこの仕事をするために必要とする何か他のもの?

+0

on -functionをオーバーロードするための基準は、外this' 'を参照してくださいように、それはあなたが新しい変数を作ることができましたsetTimeoutメソッド。たとえば、次のようにします。 '' 'var that = this; setTimeout(()=> { that.notify({ eventName: 'foo'、 オブジェクト:そのうち、 }); '' '。" http://stackoverflow.com/questions/111102/how-do-javascript -closures-work –

+0

私はそれを行うことができましたが、ES6の矢印構文を使用しているので、コンテキストが自動的に処理されるので、その必要はありません。 – Merott

答えて

5

プロパティのプロパティを作成public static fooEvent="foo" 名前は、それが今では動作するはずeventname + Eventべきであることが重要です。

+0

どうもありがとう! – Merott

+0

はい、それはまだ文書化されていませんし、3日間この問題に苦しんでいました。ついに、すべてのプラグインがこれをやったことがわかりました。私はそれを試しました、そして、私はそれを試しました。働いた:) – HabibKazemi

+0

damet garm agha;) – Merott

0
  1. イベントpublic static fooEvent="foo"のプロパティを作成します。名前は重要です! eventname + "Event"

  2. があなたの宣言ファイルindex.d.tsまたはFooPlugin.d.ts

    // Needed when on method is overriden. on(eventNames: string, callback: (data: EventData) => void, thisArg?: any);

関連する問題