問題タブ [angular-broadcast]

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 投票する
0 に答える
127 参照

javascript - 子コンポーネントが親からブロードキャストを受信して​​いない

Angular 1.5 で単純なグリッド コンポーネントを構築していますcomponent。構造は次のとおりです。

<grid-component>にイベントをブロードキャストし<grid-header>ますが、ヘッダー コンポーネントはメッセージを受信して​​いません。

これが私の使い方の簡単な例です。

興味深いことに、スコープを調べると、それらは実際にはスコープ階層の兄弟であるということです。

両方の親のメモ ID は同じです。また、子の prevSibling が親であることに注意してください。

変更$scope.$broadcastする$scope.$parent.$broadcastと、兄弟であるため、期待どおりに機能します。

コンポーネントがネストされている場合、Angular がこれらを兄弟と見なすのはなぜですか? また、$parentチェーンをたどらずにイベントをブロードキャストする方法はありますか?

0 投票する
0 に答える
161 参照

javascript - AngularJS: 動的に追加されたコントローラー間の通信

これは、StackOverflow に関する私の最初の投稿/質問です。改善できる点があれば、アドバイスをください :)。

それでは、問題に飛び込みましょう。

簡単にするために、コードの無関係な部分を削除し、必要なファイルのみを示しました。

上記のスニペットは期待どおりに動作します -$broadcastが呼び出され、すべてのコントローラーがメッセージを受信して​​反応します。私のアプリケーションでは、ブロードキャストはコントローラーが送信することによってのみ受信されます。この問題は、動的な HTML 挿入が原因であると思います。

要件は、ページの読み込み時にコントロールを動的にレンダリングすることです。私は次のアプローチを使用してコンテンツを生成しています。

すべてのコントロールで同じロジックを共有しているため、同じコントローラーを使用しています。

機能、コントローラーの作成に関するガイド、モジュールとサービスの定義に関する多くの資料を読みました(これにより、注入されたサービスの作成についてのアイデアが得られ$broadcastます)。$emit$rootScope

現在、角度フレームワーク( AddWidgets関数)の外で角度コンテンツを生成すると問題が発生する可能性があると考えています(@stackoverflow/a/15676135/6710729)。

スパイダーセンスアラームが発生したのは、JSFiddle の例で同様の状況 ( http://jsfiddle.net/XqDxG/2342/ ) を確認したときです-コントローラーの親子関係はありません。$$nextSiblingコントローラーの angulat スコープをのぞくと、$$prevSiblingプロパティが満たされていることがわかります。私の場合、これらは[ここ]にnull編集されています。

問題を解決するためのガイドラインを教えてください。私はAngularJSにかなり慣れていませんが、アプリケーションを開発しているときに学習しています。

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

angularjs - $scope.$on 内から $scope にアクセスする

私はこのコードを持っています:

$broadcast からデータを取得しました。問題ありません。$scope.switchStay 関数内からディレクティブの $scope にアクセスする必要があることを除いて。それを達成する方法はありますか?