2016-10-26 4 views
0

외부 JS 파일에 JavaScript 메서드가 있습니다. 이온 2 프로젝트에서, home.ts에서 AnyJS 함수의 일부 메소드를 호출해야합니다. 에 <script> 태그 안에 JS 파일을 포함 시켰습니다. 나는 AnyJSdeclare var AnyJS: any; 위의 @Component에 내 home.ts으로 선언했다. 이제Ionic 2에서 외부 JavaScript 함수를 호출하는 방법

, 나는 다음과 같은 참조 오류를 받고 있어요 생성자에 new 키워드를 사용하여 객체를 생성하는 동안 :

5 713568 error EXCEPTION: Error in ./HomePage class HomePage_Host - inline template:0:0 caused by: AnyJS is not defined 6 713570 error ORIGINAL EXCEPTION: AnyJS is not defined 8 713575 error ReferenceError: AnyJS is not defined

내가 사용하고있어 이온 버전 : 여기

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 

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(); 
    } 

} 

그리고 여기 내 AnyJS 파일 :

function AnyJS(){} 

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

참고 : AnyJS 파일은 최신 ES6 표준하지만 일반 JS 방법을 준수하지 않는 몇 가지 프로퍼티와 메소드를 가진 객체를 포함합니다. 개체를 만들고 내 home.ts에서 직접 메서드를 호출해야합니다.

답변

2

변경하여 AnyJs은 이런 식으로 파일 :

당신의 home.ts 파일 가져 오기에 그런
export class AnyJs { 

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

} 

그것을 :

당신의 AnyJs 파일 정보 파일 ES6 경우
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)); 
    } 

} 

이제 당신은 그 옵션이

모듈을 선언하고 사용할 클래스를 내 보냅니다.

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

또는 모듈로 당신의 도움에 대한

export default function() { ... }; 


import myFunc from 'AnyJs'; 
myFunc(); 
+0

감사 기능을 선언합니다. 그러나 TypeScript에서 외부 j의 함수를 다시 작성해야합니까? TypeScript로 다시 작성하지 않고 js 파일을 가져 오는 다른 솔루션이 있습니까? –

+0

예를 들어 es6 :'declare module "foo"{ export class Foo {} } "을 사용하여 모듈을 선언 할 수 있습니다. –

+0

설명해 주시겠습니까? 왜냐하면 TypeScript에서 재 작성하지 않고 js 파일을 그대로 가져 오려고하기 때문입니다. –

관련 문제