如何从NativeScript自定义组件公开方法?
我想从NativeScript项目中的自定义组件公开一个方法。以下是概念设置: MyComponent.xml如何从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”);
…用户界面标记。。。
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
}