問題タブ [angularjs-controller]

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.

0 投票する
16 に答える
332040 参照

javascript - AngularJS:コントローラー間で変数を渡すにはどうすればよいですか?

2 つの Angular コントローラーがあります。

未定義のため、Ctrl1内部では使用できません。Ctrl2しかし、そのように渡そうとすると…</p>

エラーが発生します。誰もこれを行う方法を知っていますか?

やっている

また、失敗します。

注:これらのコントローラーは相互にネストされていません。

0 投票する
3 に答える
124964 参照

javascript - コントローラ内で $setValidity を使用する

ファイルの変更について検証を試みています。これが私のコードです:

ビュー/テンプレート

コントローラ

しかし、現在、への呼び出し$setValidityは機能していません。
何かご意見は?

0 投票する
4 に答える
13468 参照

angularjs - 2 つの異なるビューで 1 つのコントローラーを再利用する方法は?

コントローラーを 1 つ定義し、わずかな違いで 2 つのビューに適用します。

角度コード:

ビュー 1:

ビュー 2:

サンプル コードは非常に単純ですが、実際のプロジェクトには多くのコードとロジックがあります。

ビュー 1 とビュー 2 の機能はほとんど同じで、いくつかの違いがありますが、コントローラーでそれぞれのコードを記述する必要があります。

ほとんど同じロジックを持っているため、2 つの異なるコントローラーを作成したくありません。2 つのコントローラー間でロジックを共有するためにロジックをサービスに移動したくありません。これは、ロジックがサービスとして一般的ではないためです。

それを行う他の方法はありますか?

0 投票する
2 に答える
4665 参照

angularjs - AngularJS: 配列型パラメーター (チェックボックス、複数選択など) を使用して $resource 経由でリクエストを送信する

GET パラメータに一連のチェックボックス (client_status) がある場合、AngularJS で $resource ライブラリを使用して適切にシリアライズされた GET リクエストを送信しようとすると問題が発生します。

これは、現在コントローラーにあるコードです。

上記は、次の GET リクエストを送信します。

ただし、私が理解していることから、上記は正しい形式ではないようです。誰かがここで私を少し案内してもらえますか? 以下は私が期待するものです:

よろしくお願いいたします。

トーマス

0 投票する
2 に答える
4400 参照

javascript - コントローラー内からjQuery DOM操作をトリガーする正しい方法は何ですか?

したがって、コントローラー内からのjQuery操作は悪い習慣であると読み続けていますが、その理由や修正方法については明確ではありません。

以下は、ビデオ作成者のコメントでさえ悪い考えであるYoutubeチュートリアルのコードですが、理由を説明せず、とにかく悪い動作を使用し続けています.

https://www.youtube.com/watch?v=ilCH2Euobz0#t=553sから:

解決策:

以下のラングドンの回答に基づいて、私は自分の作業用に次の作業コードに到達しました。これは、上記のサンプルコードからわずかに派生しています。

これは、いくつかの点でラングドンの答えとは異なります。ngClickコールバックにパラメータを追加することは避けたかったので、 thisProject. また、例と私のコードは成功のコールバックdestroy内から呼び出す必要があるため、どちらが関連しなくなったかの代わりに、クリックされた要素を に保存しています。$httpthisthisElem

更新 2 :

funcComplete が元の $scope を実際に変更していないことを反映するために、私のソリューションをさらに更新しました。

0 投票する
10 に答える
114983 参照

angularjs - AngularJS : サービス プロパティにバインドする正しい方法

AngularJS でサービス プロパティにバインドする方法のベスト プラクティスを探しています。

AngularJS を使用して作成されたサービスのプロパティにバインドする方法を理解するために、複数の例に取り組みました。

以下に、サービス内のプロパティにバインドする方法の 2 つの例を示します。どちらも機能します。最初の例では基本的なバインディングを使用し、2 番目の例では $scope.$watch を使用してサービス プロパティにバインドしています。

サービスのプロパティにバインドするときにこれらの例のいずれかが優先されますか、それとも私が知らない別のオプションが推奨されますか?

これらの例の前提は、サービスがそのプロパティ「lastUpdated」と「calls」を 5 秒ごとに更新する必要があるということです。サービス プロパティが更新されると、これらの変更がビューに反映されます。これらの例はどちらも正常に機能します。それを行うより良い方法があるかどうか疑問に思います。

基本的なバインディング

次のコードは、ここで表示および実行できます: http://plnkr.co/edit/d3c16z

サービス プロパティへのバインドを解決するもう 1 つの方法は、コントローラーで $scope.$watch を使用することです。

$scope.$watch

次のコードは、ここで表示および実行できます: http://plnkr.co/edit/dSBlc9

サービスで $rootscope.$broadcast を使用し、コントローラーで $root.$on を使用できることは承知していますが、$broadcast/$on を使用して作成した他の例では、最初のブロードキャストがコントローラーですが、ブロードキャストされる追加の呼び出しはコントローラーでトリガーされます。$rootscope.$broadcast の問題を解決する方法を知っている場合は、回答を提供してください。

しかし、前に述べたことをもう一度言いますと、サービス プロパティにバインドする方法のベスト プラクティスを知りたいと思います。


アップデート

この質問は、最初は 2013 年 4 月に尋ねられ、回答されました。2014 年 5 月に、Gil Birman が新しい回答を提供し、それを正解として変更しました。Gil Birmanの回答には賛成票がほとんどないため、この質問を読んでいる人が彼の回答を無視して、より多くの票を持つ他の回答を支持することを懸念しています. 最良の答えを決める前に、Gil Birman の答えを強くお勧めします。

0 投票する
2 に答える
5356 参照

javascript - AngularJS $compile による動的コンテンツのスコープがコントローラーのスコープにアタッチされていません

ディレクティブを持つ文字列を介して新しい要素を生成し (そのためコンパイルする必要があります)、そのディレクティブが "=" を介してコントローラー スコープ内の変数との関連付けを生成すると、コントローラー内の変数は、ディレクティブに 1 つ。

「ドア」の ng-model 値をすべてのディレクティブ モデル値に関連付ける必要がある例を示すために、jsfiddle を作成しました。

このフィドルを参照してください:http://jsfiddle.net/aVJqU/2/

私が気付いたもう 1 つのことは、html に存在する要素から実行されるディレクティブが、変数 (コントローラーとディレクティブ) を介して正しい関連付けを示していることです。

html (バインドするディレクティブがあります<door>):

これはディレクティブです:

これはコントローラーです:

そして最後に、これはバインドしないディレクティブを持つ文字列をコンパイルするディレクティブです。

すべての「ドア」の ng-model 値を一緒にバインドするにはどうすればよいですか? コンパイルされたディレクティブはどこにバインドされていますか?

0 投票する
1 に答える
2631 参照

angularjs - Angular: 複数のコントローラーで一度サービスを呼び出す

これはかなり単純な質問ですが、私は困惑しています。

私は、http 呼び出しを行い、結果の広範な後処理を行うサービスを持っています。処理された結果を $scope.variable に割り当てて、いくつかの異なるビューで使用したいと考えています。ビューごとに個別のコントローラーがありますが、各コントローラーがサービスを呼び出して、リソースから同じデータを取得し、コントローラーごとに 1 回後処理する必要はありません。

非常に単純化された私はこれを持っています:

明らかに、 $scope.data = Data.processData() を一度だけ設定して、すべてのコントローラーに入力したいと思います。現状では、各コントローラーが個別にサービスを呼び出すため、不要なトラフィックと CPU が作成されます。

単純なものがあると確信していますが、わかりません。すべてのコントローラースコープに共通の変数を定義できる「スーパー」スコープを作成する方法はありますか?

ありがとう、