問題タブ [angular-providers]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - Angular によって認識されないプロバイダー内の関数
最初に、私が達成したいことの背景を少し説明します。挿入して使用する前に、いくつかの構成が必要なサービスがあります。いくつかの調査を行った後、サービスのプロバイダーを持つことが最善の解決策になると考えました. そこで、この例に従ってプロバイダーを実装しました。Typescript コンパイラー (私は typescript を使用してコードを有効な JavaScript にコンパイルしています) が問題ないと判断したとしても、JavaScript は、プロバイダーを介していくつかのオプションを設定するために使用できる関数を認識しません。
私のコードは次のようになります (一部のコードは省略されているか、名前が変更されています)
この問題は、単体テストの 1 つでプロバイダーを使用し (テスト用に Mocka と共に Karma を使用しています)、setOptions
関数を呼び出すときに発生します。これはこのように行われます。
このテストを実行すると、カルマは次のエラーをスローします
TypeError: provider.setOptions は Context.[anonymous] の関数ではありません
また、コンパイルされた JavaScript Visual Studio Code は、行のプロバイダー変数に緑色の警告を表示しています (エラーではないと思います)。.provider('CustomService', CustomServiceProvider);
タイプ '() => void' の引数は、タイプ 'IServiceProvider' のパラメーターに割り当てられません。プロパティ '$get' がタイプ '() => void' にありません。
(ローカル変数) CustomServiceProvider: () => 無効な
プロバイダー
この問題の修正にすでに何時間も費やしましたが、解決策が見つからないようです。私が間違っていることを修正する方法について何か考えはありますか?
前もって感謝します。
編集 (2015 年 9 月 30 日)
私が話しているサービスは次のようになります。
javascript - Angular プロバイダーは、依存関係が必要な関数を受け入れます
これにどのタイトルを付けるかはわかりませんでしたが、基本的には、後で実行される requireLogin() 関数を持つように構成フェーズで構成する必要がある、自分で作成した承認プロバイダーがあります。このような...
そして、これはプロバイダーコードです
補足: ng-annotate を使用しているため、DI の配列構文は使用しないでください。
とにかく、ご覧のとおり、後で $auth.requireLogin.then(...) などを使用して呼び出される config フェーズに格納されている関数は、angular-ui モーダル サービスにアクセスする必要がありますが、呼び出すと後でプロバイダー内から関数を呼び出すと、明らかにDIのようなことは起こっていません. $modal をプロバイダーの依存関係に入れることもできません。これを行うのは時期尚早です。また、プロバイダーは、渡す関数に必要な依存関係がわからないためです。
答えはおそらく次のとおりだと思います。
A) 渡した関数内でインジェクターを使用して $modal サービスにアクセスするか、
B)外部から呼び出されたときにプロバイダー内から何らかの方法で関数を実行し、実行時に注入されたすべての提供された依存関係を何らかの方法で取得しますか?
これを簡単に説明できない場合は申し訳ありません。JSfiddle を作成しようとしましたが、コードを簡単にハッキングできませんでした。
javascript - jsonファイルからデータを読み取り、angularJSで文字列またはオブジェクトとして返す方法は?
personManagerInstance.getString("firstname",'common','en') 現在、影響を与える ui に直接文字列を渡しますが、必要なのは json ファイルからデータを読み取り、文字列として返すことです..
personManagerInstance.getString("firstname",'common','en') メソッド JSON ファイルからデータを読み取り、文字列またはオブジェクトとして返す必要がありますか?
personManagerInstance.getString("lastname",'registration','en') パラメータに基づくこのメソッドは、別の場所から json を読み取り、文字列として返します...
angularjs - 不明なプロバイダー: $state
こんにちは、$injector サービスを介した依存性注入で問題が発生しています。
私はAngularが初めてなので、IoCコンテナーの観点からこれをどのように見るかを説明します。
最初の問題: $injector は $state を解決できません。
core.js
エラーは次のとおりです。
ここではスタックトレースがあまり関係がないと思います...しかし、念のために質問の最後に投稿しました:
Index.html : .js ファイルを参照する場所と順序を示したかっただけです。
angularのプロバイダーレシピを理解しているように:
「$stateProvider」が作成され、それ自体で注入できる場合、「$state」サービスを IoC に登録しなかったのはなぜですか
編集:さらに、依存関係として $state サービスを受け取ることに問題のない別のモジュールが後であります。
何か.js
EDIT 2:どの設定でも機能しない私の悪いVISHAL DAGAは正しかった。
スタック トレース:
angularjs - 単体テストの構成フェーズ プロバイダーをモックする方法は?
テスト中の Angular モジュールの構成フェーズでメソッドが呼び出されることを確認する仕様を書いています。
テスト対象のコードを簡単に見てみましょう。
core
上記では、単一の依存関係を持つモジュールを定義しています。
次に、モジュールのconfig
-block で、from を使用するように指定されたオブジェクトのメソッドcore
を呼び出します。deferIntercept
configAction
services.configAction
core
config がそのメソッドを呼び出すことをテストしようとしています。
これが現在のセットアップです。
それに関する問題は、オーバーライドしないconfigAction
ため、スパイが呼び出されないことです。元のメソッドはそうです。モジュール
の依存関係としてそれを削除すると、そうするので、代わりに動作し、スパイが呼び出されます。core
angular.module('core',[])
angular.module('core',['services.configAction'])
services.configAction
依存関係リストから削除せずにテスト中にオーバーライドする方法はありますか?