如何将自定义事件添加到 NativeScript UI 插件
How to add a custom event to a NativeScript UI plugin
在 NativeScript 中为 UI 插件定义自定义事件需要什么?
我想要实现的是触发一个 foo
事件,它的工作方式类似于 Button
上的 tap
事件,并且可以按如下方式连接:
<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>
我所做的基本上归结为从插件代码中使用 eventName
值 foo
调用 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);
}
}
还有什么我遗漏的,我需要做的才能完成这项工作吗?
创建 属性 public static fooEvent="foo"
属性 的名称很重要它应该是 eventname
+ Event
现在它应该可以工作了。
为您的活动 public static fooEvent="foo"
创建一个 属性。名字很重要!必须是 eventname
+ "Event"
在声明文件 index.d.ts
或 FooPlugin.d.ts
中重载 on
函数
// Needed when on method is overriden.
on(eventNames: string, callback: (data: EventData) => void, thisArg?: any);
在 NativeScript 中为 UI 插件定义自定义事件需要什么?
我想要实现的是触发一个 foo
事件,它的工作方式类似于 Button
上的 tap
事件,并且可以按如下方式连接:
<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>
我所做的基本上归结为从插件代码中使用 eventName
值 foo
调用 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);
}
}
还有什么我遗漏的,我需要做的才能完成这项工作吗?
创建 属性 public static fooEvent="foo"
属性 的名称很重要它应该是 eventname
+ Event
现在它应该可以工作了。
为您的活动
public static fooEvent="foo"
创建一个 属性。名字很重要!必须是eventname
+"Event"
在声明文件
中重载index.d.ts
或FooPlugin.d.ts
on
函数// Needed when on method is overriden. on(eventNames: string, callback: (data: EventData) => void, thisArg?: any);