如何将自定义事件添加到NativeScript UI插件

时间:2016-08-31 23:54:34

标签: plugins nativescript

在NativeScript中为UI插件定义自定义事件需要什么?

我想要实现的是触发foo事件,该事件与tap上的Button事件类似,并且可以按如下方式挂钩:

<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>

我所做的基本上归结为从插件代码中调用notify eventNamefoo的{​​{1}}函数(忽略内存泄漏注意事项):

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);
  }
}

还有其他一些我缺少的东西吗?我需要做些什么来使这项工作?

2 个答案:

答案 0 :(得分:6)

创建一个属性public static fooEvent="foo" 该属性的名称很重要,它应该是eventname + Event现在应该可以使用。

答案 1 :(得分:0)

  1. 创建活动public static fooEvent="foo"的属性。这个名字很重要!必须是eventname + "Event"

  2. 重载声明文件onindex.d.ts

    中的FooPlugin.d.ts - 函数

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