2017-12-29 16 views
0

私のAngularJsコントローラの中でこれをNoSleep.jsにする必要があります。 NoSleepをインストールしましたが、私はそれを私のangularjsコントローラに注入する必要がありますが、どうすればいいのか分かりません。NoSleepは角度サービスではありません。この宣言を使用するにはvar noSleep = new NoSleep();を使用する必要があります。anglejsコントローラに外部javascriptファイルを挿入するには

私はカルマ、

どれアドバイスをバベル、WebPACKの、がぶ飲みを使用していますか?

+0

開発設定を指定する必要があります。あなたはウェブパックを使用していますか?グラン/ギャルプ? –

+0

こんにちは@FranciscoMateoウェブパック –

答えて

1

AngularJsライブラリがない場合はAngularjsライブラリではなく、scriptタグをHTMLファイルに追加し、AngularJsを作成する前と同じように呼び出してください。
試しましたか?

あるいは、AgnularJsサービスでlibをラップして(AngularJsサービスを作成し、libメソッドを呼び出す)、必要に応じてこの新しいサービスを挿入します。

更新:良いとあなたのためにおそらく十分だったが、私はそれはあなたのサービスを構築し、作成したメソッドを呼び出すために、より良いことだと思うが、これらの方法を使用内部の何@マイクFeltmanとrichbai90 @その答えの中で述べて
あなたが別のものにnosleepのlibを変更したい、そしてその新しいlibには、別のメソッド名を持っている場合

(function() { 
    'use strict'; 

    angular.module('nosleep.module', []).service('nosleep', ['', nosleepFunc]); 

    function nosleepFunc() { 
     var nosleepObj = new NoSleep(); 

     var service = { 
       method1: method1, 
       method2: method2 
       //... etc 
     }; 

     function method1() { 
      return nosleepObj.method1(); 
     } 

     // ..... other methods 

     return service; 
    } 

})(); 

この方法では、あなただけの必要があります。これまで図書館は何をしたい(これは、C#のインターフェイスを使用してのようになります)あなたのサービスコードを変更する。

1

NoSleepだけのグローバルスコープの関数を宣言しますようにあなたは、このような何か行うことができますので、それは、見えます:

NoSleepService.js

(function() { 
    // place noSleep minified code here 
    angular.module('myApp').service('noSleep', NoSleep); 
})() 

囲ん内NoSleepオブジェクトを作成します。グローバルスコープを汚染せず、それのnewインスタンスを角度アプリに登録することはありません。

+0

こんにちは@ richbai90、働いていない –

1

通常、Angularjsアプリケーションで非angularjsライブラリを使用する場合、モジュールにラップされます。あなたはこのようになりますモジュールを作成したいので、あなたは、あなたのアプリにモジュールを挿入し、必要に応じて、あなたのコントローラにこれで包まれてきたサービス/工場を注入:

(() => { 
    "use strict" 
    angular.module('nosleep.module', []).factory('nosleep', ['', function() { 
    return new NoSleep() 
    }]) 
})() 

を次に、あなたは」あなたがnosleepを注入したいnosleepへのアクセスを必要とし、あなたのコントローラに続いて

angular.module('myApp', '[nosleep-module') 

:Dのようなものを使用して、アプリケーションのメインモジュールにモジュールを注入。

class myController { 
    constructor(nosleep) { 
     this.nosleep = nosleep 
    } 
} 

次に、あなたのコントロールの中から、あなたはthis.nosleepでそれに対処することができます。

関連する問題