如何在Ionic 2

时间:2016-10-26 08:28:27

标签: javascript angular ionic2

我在外部JS文件中有一个JavaScript方法。在Ionic 2项目中,我必须从我的AnyJS调用home.ts函数的一些方法。我已将JS文件包含在<script>中的index.html标记内。我在AnyJS declare var AnyJS: any;@Component上面home.ts声明了new

现在,在构造函数中使用ReferenceError: AnyJS is not defined关键字创建对象时,我收到以下引用错误:

  

5 713568错误EXCEPTION:./ HomePage类中的错误HomePage_Host - 内联模板:0:0引起:AnyJS未定义   6 713570错误原始异常:未定义AnyJS   8 713575错误Cordova CLI: 6.3.1 Ionic Framework Version: 2.0.0-rc.1 Ionic CLI Version: 2.1.0 Ionic App Lib Version: 2.1.0-beta.1 ios-deploy version: 1.8.3 ios-sim version: 5.0.4 OS: Mac OS X El Capitan Node Version: v6.8.0 Xcode version: Xcode 8.0 Build version 8A218a

我正在使用的Ionic版本:

home.ts

以下是import { Component } from '@angular/core'; import { NavController } from 'ionic-angular'; declare var AnyJS: any; @Component({ selector: 'page-home', templateUrl: 'home.html' }) export class HomePage { private anyjs : any; private method : any; constructor(public navCtrl: NavController) { this.anyjs = new AnyJS(); this.method = this.anyjs.methodCall(); } }

function AnyJS(){}

AnyJS.prototype.methodCall = function() {
    console.log("Done!");
    return true;
};

而且,这是我的AnyJS文件:

home.ts

注意:AnyJS文件包含一个对象,其中包含一些属性和方法,这些属性和方法不符合最新的ES6标准,而是纯JS方法。我需要创建一个对象并直接从我的USE omitted GO CREATE PROCEDURE TrimTrailingSpaces @table_name VARCHAR(50), @column_name VARCHAR(50) AS BEGIN declare @sql varchar(200); set @sql='UPDATE ' + QUOTENAME(@table_name) +' SET '+ @column_name+ ' = LTRIM( RTRIM( ' + QUOTENAME(@column_name) +' ) )'; END GO 调用方法。

1 个答案:

答案 0 :(得分:2)

将AnyJs文件更改为以下内容:

export class AnyJs {

  public methodCall () {
    console.log('done');
    return true;
  }

}

然后在您的home.ts文件中导入它:

import { Component } from '@angular/core';

import { NavController } from 'ionic-angular';

import { AnyJs } from './anyjs.ts'; // or the path of the file

@Component({
  selector: 'page-home',
  templateUrl: 'home.html'
})

export class HomePage {

    constructor(
      public navCtrl: NavController,
      public anyJs: AnyJs) {
        this.anyJs = anyJs; 
        // And then you can use it anywhere in your file like:
        this.anyJs.methodCall().success(data => console.log(data));
    }

}

现在,如果您的AnyJs文件是ES6文件,那么您有以下选项:

声明一个模块并导出要使用的类:

declare module "foo" { export class Foo{ } }

或声明作为模块的功能

export default function () { ... };


import myFunc from 'AnyJs';
myFunc();