問題タブ [angular-services]
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 - angularjs にサービスが見つかりません
AuthFilter
angularjs でサービスが見つからないというエラーが表示されます。jsfiddle のサンプル: http://jsfiddle.net/F5dhg/。サービスが明らかに存在するため、インジェクターによってサービスが見つからない理由がわかりません。また、ブロックに ( の代わりに)をインクルード$injector
すると、同じエラーが発生しますが、そうすると が発生し、再度そうすると、循環依存エラーが発生します。私は angularjs にかなり慣れていないので、これを解決するための助けをいただければ幸いです。config
AuthFilter
$injector.get('AuthFilter')
$injector.has('AuthFilter')
true
$injector.get('AuthFilter')
angularjs - 設定機能中、サービスはどのように範囲内にありますか?
私はこれを非常によく読みましたが、投稿はありません
Angular.jsで他のものに注入できる「もの」は何ですか?
resolve プロパティを使用して xhr を作成し、サービスを使用してこれらの呼び出しを支援するように言われたので、興味がありました。このコードの resolve プロパティはどのように機能しますか? $injector はどの時点で呼び出されますか?
jquery - Angular サービス内で jQuery.cookie プラグインを使用する方法
ngCookie
アプリで Cookie を保存および取得するために使用しようとしています。で作成された Cookie のパスまたは有効期限を設定できないため、ngCookie
他の場所を探す必要がありました。
だから私はこのjQuery cookie pluginを使用しようとしています。
ただし、Angular サービスで使用できるようにする方法がわかりません。コントローラーとサービスで jQuery プラグインを使用できるようにする方法について調べてみると、答えは満場一致でディレクティブを使用することを指していますが、Cookie はコントローラーとサービスが認識すべきものであるため、この場合は正しいアプローチではないと思います。
では、Angular サービスで jQuery プラグインを利用できるようにするにはどうすればよいでしょうか?
javascript - 1 つのアプリケーション内の複数のモデル オブジェクトに対する Angular CRUD
CRUD 操作を個別に実装する必要がある 3 つの異なるビジネス オブジェクトを持つ Angular アプリケーションがあります。それらをa、b、cと呼びましょう。これらの CRUD 操作を管理するために、同等の aCtrl,bCtrl,cCtrl と aSvc,bSvc,cSvc があります。したがって、この例では、aCtrl が「a」の CRUD を管理します。aSvc は、ajax 呼び出しを使用してデータをバックエンドに永続化するのに役立ちます。また、アプリケーションが初めて読み込まれたときに、すべてのオブジェクト a、b、c をバックエンドから 1 つの json オブジェクトにまとめてプルする allCtrl と allSvc もあります (それらを個別にプルするのではなく、1 つの統合された json オブジェクトをプッシュするようにバックエンドを設計しました)。 a、b、cが埋め込まれています。
「すべて」のオブジェクト
そのため、単純で意味のある方法でアプリを構成することに行き詰まっています。アプリが初めて読み込まれると、バックエンドから allSvc によって「all」オブジェクトが取り込まれます。これには、CRUD を実行するために必要なすべてのデータが含まれています (もちろん、バックエンドとの同期を維持する必要があります)。アプリが初めて読み込まれるときに、タイプ 'a' のオブジェクトを一覧表示し、編集/削除/追加のオプションをユーザーに提供したいと考えています。同様に、オブジェクト「b」、「c」に対してまったく同じことを行う他のページにユーザーを連れて行くためのドロップダウンナビゲーションがあります。
ここに私がこれまでに行ったことと、私が惨めに失敗した方法の一部を示します:)
index.html
js
ルート
aCtrl
この設計では、適切に編集/削除を実行するために routeParams を意味のある設定を行うことができません。また、userId (CRUD 操作を実行する必要があるログイン ユーザー) も考慮する必要があります。ルートをより適切に管理するにはどうすればよいですか? 例として、「a」を編集するには /a/edit/userId/aId のようなものを使用し、「a」を削除するには /a/delete/userId/aId のようなものを使用する必要がありますか?
この糞を磨くのを手伝ってください。
javascript - AngularJs 認証サービスの動作がおかしい
更新: JS のコード
angular-appから認証 (セッション) サービスを借用し、大幅に変更しました。
これはアプリです:
したがって、アプリケーションが起動すると、 currentUser が要求されると思います(おそらく、要求のコールバックの前にコントローラーが動作を開始しますが、問題は別の場所にあります)。次に、コントローラー:
ポイントは、ユーザーがログインしているときはisAuthenticated()
常にfalse
ですが、currentUser
null ではないということです。したがって、ログインすると、サイトが読み込まれたときだけでなく、ナビゲートしているときにも表示されます$log.info
。currentUser: [object Object] ; isAuth: false
ログアウトすると、 が表示されますcurrentUser: null ; isAuth: false
。明らかにcurrentUser
、サービス内では常に null です。しかし、値を変更できるように定義するにはどうすればよいですか?
unit-testing - scope.$digest を呼び出さずに $http を使用するサービスを単体テストできません
私のアプリケーションには$http
、特定の仕様に従ってリクエストをフォーマットする を利用するサービスがあります。$httpBackend
応答をモックアップするために使用して、サービスのメソッドで単体テストを実行しようとしています。を使用するコントローラーとディレクティブをテストするとき、これで問題はありませんでした$http
が、私のサービスでは問題がありました。
ここで最初の回答のパターンに従っています: AngularJS - $http サービスを使用するサービス メソッドのテスト
つまり、予想されるリクエストを に登録し、$httpBackend
それに対するレスポンスを定義し、対象のサービスのメソッドを呼び出してから、バックエンド モックをフラッシュします。
$rootScope
を注入し、新しいスコープを作成して、対象$digest()
のサービス メソッドを呼び出した後にその上でを実行しない限り、これを機能させることはできません。これは、テスト ランナーと を使用するディレクティブのテストで使用するパターンです$http
。テスト ランナーは、それ以外の場合はフラッシュする保留中の要求がないことを示すためです。ただし、サービスでこの要件が必要になるとは思ってscope
いませんでした。サービスではあまり意味がありません。さらに、上記の質問への回答は、これが明示的に必要であることを示していません。
今朝かなり長い間Angularソースを調べた後、サービスの$http
リクエストに対してプロミスオブジェクトが正常に作成されていることを確認しましたが、プロミス解決関数は$q.when
の呼び出しに登録されていて、nextTick()
決して起動しないことがわかりました。servicesSpec でスコープ オブジェクトをダイジェストする行を追加した場合にのみ、すべてが起動します....
これは既知の問題ですか? v1.2.0rc2 を使用しています。テスト サービスをスコープ オブジェクトから切り離すための回避策はありますか?
参考までに、機能する仕様コードを次に示します。
javascript - $http.get 呼び出し内でサービス コンテキストを取得する
$http.get().success()
以下の例では、呼び出し内のコンテキストは ですundefined
。「use strict;」を使っているからだと思います。そしてそれsuccess()
は通常の機能です。
ただし、関数呼び出し内でサービスのコンテキストにアクセスする必要があります。これを達成する適切な方法は何ですか?