Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Plugins 从Nativescript中的按钮点击引用插件函数_Plugins_Nativescript - Fatal编程技术网

Plugins 从Nativescript中的按钮点击引用插件函数

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() {

我真的对插件中的逻辑代码流感到困惑。我正在使用它,并试图在演示应用程序中创建一个按钮,该按钮从插件调用一个函数,该插件仅包含一个console.log,我有:

//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*的形式导入插件我仍然没有控制台。登录按钮按下。。。