2017-11-01 7 views
0

Sprich Sie eine einfache JavaScript-Funktion wie sayHello() haben:Wie beziehen Sie sich auf benutzerdefinierte Javascript-Funktionen in Ihren Typ-Skript-Methoden?

function sayHello(){ 
    alert('Hello'); 
} 

und setzen Sie diese in Ihrer App assets/js Ordner als benutzerdefinierte Bibliothek assets/js/my-js-library.js

Dann endlich finden Sie es von der index.html wie folgt aus:

<script src='http://example.com/assets/js/my-js-library.js'></script> 

Was es in Typoskript (sagen wir in ngOnInit zum Beispiel) dauert so kann man so etwas tun?

ngOnInit() { 
    sayHello(); 
} 

Oder ist es nicht möglich?

+0

Ja, Ihr Code sollte einfach funktionieren, haben Sie es versucht? Wenn eine JavaScript-Funktion im globalen Gültigkeitsbereich ist, können Sie sie von überall aufrufen. – Kokodoko

Antwort

0

Yeah du kannst.

external.js

var myExtObject = (function() { 

    return { 
    func1: function() { 
     alert('function 1 called'); 
    }, 
    func2: function() { 
     alert('function 2 called'); 
    } 
    } 

    })(myExtObject||{}) 

function justAFunction(){ 
    alert('test'); 
} 

var webGlObject = (function() { 
    return { 
    init: function() { 
     alert('webGlObject initialized'); 
    } 
    } 
})(webGlObject||{}) 

app.ts

import 'external.js' 

declare var myExtObject: any; 
declare var webGlObject: any; 

export class App { 
    name:string; 
    constructor() { 
    this.name = 'Angular2' 
    webGlObject.init(); 
    justAFunction(); 
    } 

    CallFunction1() { 
    myExtObject.func1(); 
    } 

    CallFunction2() { 
    myExtObject.func2(); 
    } 
} 

Check diese URL aus: https://plnkr.co/edit/b2kAztHntMuNjTfOv8jD?p=preview

+0

Danke. Wenn es so viel Arbeit ist, würden Sie sagen, dass es besser ist, Ihre js-Bibliotheksfunktionen in typeScript zu konvertieren und diese Methode vollständig zu bestehen? Denn ehrlich gesagt, hatte ich nicht erwartet, eine solche mehrstufige Operation für eine sayHello Func, die sowieso bare js func ist? –

+0

Ich habe den Code aktualisiert, Sie können einfach Ihre js-Funktion nach dem Import der external.js in Ihr typescipt – i3lai3la

+0

zuerst, vielen Dank für Ihre Ausgaben Zeit auf diese - __this much__. Schätze es wirklich. Um den Code weiter zu vereinfachen und meine Frage genau anzusprechen, werde ich eine Antwort erstellen. Würden Sie es bitte überprüfen und ändern, wenn ich Fehler mache? –

0

external.js

function justAFunction(){ 
    alert('test'); 
} 

app.ts

import 'external.js' 

export class App { 
    constructor() { 
    justAFunction(); 
    } 
} 

würde dies funktionieren? Ich ging davon aus, dass die Deklaration webGlObject keine Auswirkungen auf die justAFunction hat. Der Grund, warum ich den Code auf Func1 und Func2 ausgeschnitten habe, weil ich keine Geschäfte mit den Objekten gemacht habe. Ich wollte nur die knappe Notwendigkeit sehen, um eine einfache externe HelloWorld js-Funktion in TypeScript zu verwenden.

Wenn wir nur auf die justAFunction konzentriert, würde dieser Code die min Notwendigkeit sein? Ich vermute, mein Fehler war, die <Script src=''> im Gegensatz zu der import zu verwenden. Ja Nein?

Verwandte Themen