在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
eventName
值foo
的{{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);
}
}
还有其他一些我缺少的东西吗?我需要做些什么来使这项工作?
答案 0 :(得分:6)
创建一个属性public static fooEvent="foo"
该属性的名称很重要,它应该是eventname
+ Event
现在应该可以使用。
答案 1 :(得分:0)
创建活动public static fooEvent="foo"
的属性。这个名字很重要!必须是eventname
+ "Event"
重载声明文件on
或index.d.ts
FooPlugin.d.ts
- 函数
// Needed when on method is overriden.
on(eventNames: string, callback: (data: EventData) => void, thisArg?: any);