問題タブ [angularjs-service]
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 - 共通のコントローラー機能の作成
すべてのコントローラーからアクセスできるある種のutilsバンドルを作成するにはどうすればよいですか?
メインモジュールに次のルートコードがあります。
HomeCtrl
、、AdminCtrl
に共通の関数が欲しいMainAppCtrl
。
AngularJSでどのように行う必要がありますか?
javascript - Injecting a mock into an AngularJS service
I have an AngularJS service written and I would like to unit test it.
My app.js file has these registered:
I can test the DI is working as such:
This proved that the service can be created by the DI framework, however next I want to unit test the service, which means mocking out the injected objects.
How do I go about doing this?
I've tried putting my mock objects in the module, e.g.
and rewriting the service definition as:
But the latter seems to stop the service being created by the DI as all.
Does anybody know how I can mock the injected services for my unit tests?
Thanks
David
jquery - AngularJSInformerサービス
WebアプリでUIにTwitterBootstrapを使用しています。特にそのアラートコンポーネント。Bootstrapのアラートをラップする単純なAngularサービスを作成して、Angularコードの平和からユーザーに通知できるようにしたいと思います。このような:
<body>
私の考えは、テンプレートを:の最後に追加することです。
このようなもの:
私が知りたい唯一のこと:これをjQueryではなくangularで書くにはどうすればよいですか?上記のコードは開始に適していますか?インターネットの人々は、 DOM操作にはディレクティブのみを使用する必要があると言っています。しかし、私はそれを理解していません。ディレクティブを適用するための既存のマークアップがありません。いくつかの計算/ユーザーの相互作用の結果として、アラートがページに追加されます。temlateをコンパイルして本体のどこかに追加するには、どのサービス(、、)を使用する必要がありますか$compile
?$parse
$document
編集:コントローラーの外部でangularjsサービスを取得することも可能ですか?通常のJSコードで書けるようにgetServiece("Informer").inform("", "")
?
編集2:わかりました、私が今持っているもの:
このコードを使用すると、コントローラーから注入されたサービスを使用できます。しかし、Angularコードの外部でサービスを呼び出そうとすると問題が発生します:
これはポップアップを表示し{{message}}
ます。たとえば、テンプレートが正しくコンパイルされません。
ajax - Webサービスの応答を組み合わせたAngularJS
私は2つのWebサービスを持っています:
次のように「Articles」を返します。
そしてもう1つは、IDを指定すると、次のような「作成者」を返します。
この2つを組み合わせて、著者名と写真を記事概要リストに表示できるようにします。
このような:
記事をフェッチする「Articles」サービスがありますが、「Articles」サービスの出力を返す前に、同様の「Authors」サービスからの著者情報で返されたJSONを強化するための最良のアプローチは何ですか?
これが完全に間違ったアプローチであるかどうかも教えてください。:)
javascript - AngularJS、このサービスの使い方は良いですか?
私はこのHTMLを持っています:
コントローラーは次のとおりです。
サービスは正常に機能するため、ここにコードを貼り付けません...この場合、結果は「Hello world!」になります。HTMLを次のように変更しました。
しかし、これは機能しません。
コントローラを変更しました:
次にHTML
これはうまくいきます!
だから私の質問は:
これがサービスの関数をHTMLで直接使用する唯一の方法ですか、それとも何かが足りませんか?
javascript - このサービス宣言方法の違いは何ですか?
サービスを宣言する最良の方法は何ですか?この2つの異なる方法を見つけましたが、違いがわかりません:最初の方法:
2番目の方法:
どちらが優れているのか、その理由は? 前もって感謝します。
javascript - コントローラのpromiseオブジェクトで$filterを呼び出す適切な方法は?
ページネーション用にこのフォークされたコードプランカーを使用していますが、正常に機能していましたが、 Jsonファイルからデータを取得するように調整した後、機能しなくなりました。
コードが機能するコメント行を表示するには:[13、14、15]、次にコメント解除行:[16->37]。
エラーは、データがJsonファイルからフェッチされたときに未定義を返す$ filter関数の問題に関するものです。したがって、オブジェクトは$ filter関数を壊す約束であるため、よくわかりません。
この2つの関数でエラーが発生します(Json呼び出しを使用)。
エラーメッセージ:
TypeError: Object。$ scope.groupToPages(controllers.js:66:45)
atObject。$scope.search(controllers.js:61:12)
at new controllers.MainCtrl(controllers )で未定義のプロパティ'length'を読み取ることができません。 js:99:10)
事前に助けてくれてありがとう。
angularjs - AngularJSサービス間でのデータの共有
AngularJSのサービス間でデータを共有する方法はありますか?
ユースケース:さまざまなサービスからのデータ集約
たとえば、RESTサービスからいくつかのデータをロードするservice1が必要です。次に、別のservice2が別のREST APIからのservice1データに追加データを追加して、データ集約サービスを作成します。
基本的に、使用するAPIに基づいてサービスを分離したいのですが、それでも最終的にすべてのデータを保持するサービスがあります。
angularjs - AngularJS テストで _servicename_ のアンダースコアは何を意味しますか?
次のテスト例では、元のプロバイダー名は APIEndpointProvider ですが、インジェクションとサービスのインスタンス化では、アンダースコアでラップしてインジェクトする必要があるようです。何故ですか?
より良い説明が欠けている慣習は何ですか?
javascript - サービス ($http) の変数の更新がビューに表示されないのはなぜですか?
私はこの問題で数時間ブロックされているので、どんな助けも大歓迎です.
私は変数(空の配列)を定義したコントローラーを持っています:
plotData
私が書いたカスタムサービスです。$http
データベースにクエリを実行し、必要なデータを取得するために使用します。
問題は、コントローラーでscope.myVar
変更されないことです。基本的に私がやろうとしているのは、コントローラーで定義された変数をディレクティブから更新することです。
私が間違っていることは何ですか?
アップデート:
@dogoku : 私が知っているように、$apply を使用する必要はありません。なぜなら、まだ Angular にある $http を使用しているためです。
@マーク・ライコック:
0) いいえ、私は実際の $http サービスを使用しています:
1) はい、コードのコメントに書きました。data.plot は、私が期待していたものです。バックエンド コードはうまく機能するので、投稿していません。
2) リンクを試してお知らせします。
その間、どんな助けも大歓迎です。