如何从NativeScript自定义组件公开方法?

如何从NativeScript自定义组件公开方法?,nativescript,Nativescript,我想从NativeScript项目中的自定义组件公开一个方法。以下是概念设置: MyComponent.xml …用户界面标记。。。 MyComponent.ts 导出加载的函数(args){//do stuff}; 导出函数myCustomMethod(){//do more stuff}; MyPage.xml MyPage.ts 已加载导出函数(args){ 让page=args.object; 让widget=page.getViewById(“myComponent”);

我想从NativeScript项目中的自定义组件公开一个方法。以下是概念设置:

MyComponent.xml

…用户界面标记。。。

MyComponent.ts

导出加载的函数(args){//do stuff};
导出函数myCustomMethod(){//do more stuff};

MyPage.xml

MyPage.ts

已加载导出函数(args){
让page=args.object;
让widget=page.getViewById(“myComponent”);

widget.myCustomMethod();//由于要重用的方法未耦合到CustomComponent,因此您可以创建一个公共文件,并在需要时需要它,并相应地重用公开的方法。或者您可以直接导入MyComponent.ts并重用其导出的方法(这不是个好主意,因为您可能可以访问myComponent.ts的所有公开方法,如onLoaded、onNavigationgTo等)

例如:

在您的navigator.ts(或者如果您更喜欢MyComponent.ts)

然后在需要的地方重复使用,如下所示:

MyPage.ts

import navigatorModule = require("navigator");

export function goBack(args: observable.EventData) {
    navigatorModule.goBack(); // we are reusing goBack() from navigator.ts
}

另一个适用的选项是使用MVVM模式,并通过绑定上下文公开您的方法。

即使我对此感兴趣,现在还有什么解决方案吗?切换到TypeScript会使这更自然/更容易解决。如果我有“视觉”今天的自定义组件,我通常会扩展StackLayout,然后添加新的公共方法/属性。因此,我的主要建议是开始将TypeScript与NativeScript一起使用(如果您还没有)。我将对此进行试验。在我的例子中,最终会出现“实例”自定义组件的状态。不确定此方法是否有效…但我会调查并报告。谢谢!
import navigatorModule = require("navigator");

export function goBack(args: observable.EventData) {
    navigatorModule.goBack(); // we are reusing goBack() from navigator.ts
}