Plugins 从Nativescript中的按钮点击引用插件函数
我真的对插件中的逻辑代码流感到困惑。我正在使用它,并试图在演示应用程序中创建一个按钮,该按钮从插件调用一个函数,该插件仅包含一个console.log,我有:Plugins 从Nativescript中的按钮点击引用插件函数,plugins,nativescript,Plugins,Nativescript,我真的对插件中的逻辑代码流感到困惑。我正在使用它,并试图在演示应用程序中创建一个按钮,该按钮从插件调用一个函数,该插件仅包含一个console.log,我有: //yourPlugin.common.ts: import * as app from 'application'; import * as dialogs from 'ui/dialogs'; export class Common { public message: string; constructor() {
//yourPlugin.common.ts:
import * as app from 'application';
import * as dialogs from 'ui/dialogs';
export class Common {
public message: string;
constructor() {
this.message = Utils.SUCCESS_MSG();
}
}
export class Utils {
//Utils Stuff - not relevant for this issue
}
export function Click() {
console.log("Clicked");
}
//demo/app/main-view-model.ts:
import {Observable} from 'data/observable';
import {YourPlugin} from 'nativescript-yourplugin';
export class HelloWorldModel extends Observable {
public message: string;
private yourPlugin: YourPlugin;
private Click: YourPlugin.Click;
constructor() {
super();
this.yourPlugin = new YourPlugin();
this.message = this.yourPlugin.message;
}
}
然后在我的xml中,我将
添加到我的应用程序页面。但是,当我按下按钮时,控制台日志没有触发,我出了什么问题
更新:
xml:
main-page.ts:
import * as observable from 'data/observable';
import * as pages from 'ui/page';
import {HelloWorldModel} from './main-view-model';
// Event handler for Page "loaded" event attached in main-page.xml
export function pageLoaded(args: observable.EventData) {
// Get the event sender
var page = <pages.Page>args.object;
page.bindingContext = new HelloWorldModel();
}
import*可从“数据/可观察”中观察到;
从“ui/页面”导入*作为页面;
从“/main view model”导入{HelloWorldModel};
//main-Page.xml中附加的页面“已加载”事件的事件处理程序
导出函数pageLoaded(args:observable.EventData){
//获取事件发送器
var page=args.object;
page.bindingContext=新的HelloWorldModel();
}
此语法:
import {YourPlugin} from 'nativescript-yourplugin'
仅从nativescript YourPlugin
模块导入名为YourPlugin
的类。因此,您无法访问主视图model.ts
文件中的任何其他内容。为了访问插件中定义的其他内容,您必须导入整个模块。此外,在您的HelloWorldModel
中,Click
应该是一个函数,您只能将其定义为某种类型。更多关于单击的信息
功能不公开。因此,您的代码应该如下所示:
import {Observable} from 'data/observable';
import nsPlugin = require('nativescript-yourplugin');
export class HelloWorldModel extends Observable {
public message: string;
private yourPlugin: nsPlugin.YourPlugin;
public Click = nsPlugin.Click;
constructor() {
super();
this.yourPlugin = new nsPlugin.YourPlugin();
this.message = this.yourPlugin.message;
}
}
最后,假设您要将XML绑定到HelloWorldModel
的实例,您的按钮应该如下所示:
<Button text="This is Button!" tap="{{ Click }}" />
此语法:
import {YourPlugin} from 'nativescript-yourplugin'
仅从nativescript YourPlugin
模块导入名为YourPlugin
的类。因此,您无法访问主视图model.ts
文件中的任何其他内容。为了访问插件中定义的其他内容,您必须导入整个模块。此外,在您的HelloWorldModel
中,Click
应该是一个函数,您只能将其定义为某种类型。更多关于单击的信息
功能不公开。因此,您的代码应该如下所示:
import {Observable} from 'data/observable';
import nsPlugin = require('nativescript-yourplugin');
export class HelloWorldModel extends Observable {
public message: string;
private yourPlugin: nsPlugin.YourPlugin;
public Click = nsPlugin.Click;
constructor() {
super();
this.yourPlugin = new nsPlugin.YourPlugin();
this.message = this.yourPlugin.message;
}
}
最后,假设您要将XML绑定到HelloWorldModel
的实例,您的按钮应该如下所示:
<Button text="This is Button!" tap="{{ Click }}" />
如果我复制了您的确切代码,+从“nativescript yourplugin”以import*的形式导入插件代码>我仍然没有控制台。登录按钮按下…如果我复制了你的确切代码,+从“nativescript yourplugin”以import*的形式导入插件代码>我仍然没有控制台。登录按钮按下。。。