問題タブ [angularjs-controlleras]
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 - コントローラーを構文として使用すると、スコープの 1 つだけが更新されます
controller as
構文に関しては、これまで一度も使用したことがないため、少し混乱しています。これを修正する正しい方法を知りたいです。検索しても同様の問題は見つかりませんでした。
メニューとメニューを切り替えるボタンがあります。メニューには独自のスコープがあり、ボタンには別のスコープがあります。これらは 2 つの別個のファイルとコンテナーに存在するからです。
nav.isActive
ボタンをクリックすると、ボタンの範囲内でのみ更新されます。状態を保存するためのサービスを作成しましたが、これは考えたときに行う必要はありません..すべきでしょうか? その値が変化したかどうかを監視する唯一の方法はウォッチャーを使用することであり、機能がない$scope
ため使用する必要がありますが、パフォーマンスに影響を与えるため、これをできる限り避けたいと考えています。このプロジェクトでは重要です。this
$watch
controller as
構文を使用するときに、別の「スコープ」から「スコープ」変数を更新する正しい方法は何ですか?
コントローラ:
あるスコープから別のスコープに値を渡すためのサービス:
メニュー マークアップ (menu.html):
メニューを切り替えるボタン (header.html):
javascript - AngularJS controllerAs: $interval のコントローラ フィールドを更新しても ng-show が更新されない
controllerAs 構文を使用していますが、何らかの理由で、コントローラーのフィールドを $interval で更新すると、ビュー内の要素が適切に表示/非表示になりません。angularのUIルーターを使用しています。
この問題は、私が考えるコードで最もよく説明されているので、コード ダンプを許してください。
私の状態(「refreshLogs」は、単に更新されたログのために logService を呼び出す関数です):
私のコントローラー:
そして最後にビュー:
DOM 更新で「ng-show」値が表示されますが、この値に基づいて要素が表示/非表示になりません。Chrome で DOM を調べたところ、次のように表示されました (強調のためにアスタリスクが追加されています)。
どちらが正しいか、適切な div が表示されます。数秒後、ログが更新され、"vm.log" 変数が null 以外の値に設定されます (この値を割り当てる JS コードにブレークポイントを設定したため、これは正しいように見えます)。その後、DOM を再度検査すると、次のように表示されます。
正しい値を示す「ng-show」属性に注意してください。だから、表現は明らかに再評価されました。ただし、古い「Waiting for log...」ヘッダーは引き続き表示され、最初の div は表示されません (「ng-hide」CSS クラスが適用されたままです)。
ここで何が欠けていますか?
angularjs - 奇妙な動作として ES6 コントローラーを使用した Angular
それは悪いタイトルです。私は知っています。それは、この質問の仕方がよくわからないからです。私は2つの本質的に同一のクラスを持っていますが、動作が少し異なり、controllerAs: 'vm'
それぞれの状態設定で対応するものも動作が異なり、Webstormからの「このメソッドは静的である可能性があります」という厄介な警告が一方に表示され、もう一方には表示されません.
index.html :
app.js
main.js
main.html
main.controller.js
ポートフォリオ.js
ポートフォリオ.html
ポートフォリオ.コントローラー.js
いつものように、あなたの考えやコメントをとても楽しみにしています。
angularjs - 角度コントローラー変数の初期化
コントローラー変数がコントローラー コードに従って正しく初期化されていないという問題があります。
コントローラーコードは
ui-router は
モデルの出力を表示するために、基本的な html を検証します。
Chrome でコードをデバッグすると、コントローラー コードが渡され、モデルとデータの両方が正しく設定されますが、ページの読み込みが完了すると、vm.model が空白になります。何が間違っているのかわかりません。
前もって感謝します。
angularjs - ControllerAs 使用時の Angular のネストされたディレクティブの問題
完全なフォームを構築するためにさまざまなディレクティブを呼び出す巨大なフォームを構築しています。Form Builder を呼び出すメイン ページは、次のように ng-model データを渡します。
次に、フォームビルダーページはさまざまな子ディレクティブを呼び出して、フォームのさまざまなセクションを構築します。
コントローラーで使用する場合、次のように子ディレクティブで$scope
問題なくアクセスできました。$scope
$scope
しかし、 を削除してを使い始めて以来ControllerAs
、親子コントローラーを使用した双方向バインディングへのアクセスにさまざまな問題が発生しています。
何をしようとしても、障害物に到達しています。私が試したことは次のとおりです。
- 分離スコープ:子ディレクティブに分離スコープとして
formData.formFields
and を渡そうとしましたが、ネストされた分離スコープが原因でエラーが発生するため、それは不可能です。formData.photoFields
$compile: MultiDir
- フォーム セクションごとに個別のディレクティブを持たず、それらすべてをディレクティブの下の 1 つのディレクティブに
formBuilder
含めると、膨大なディレクティブになります。上記は単なるスケッチですが、各子ディレクティブは最終的にまとめられた 1 つの大きなフォームを構築します。したがって、それらを一緒にマージすることは、保守が困難になり、読み取り不能になるため、実際には最後の手段です。 - 私がこれまで見てきたこと
ControllerAs
から、子ディレクティブから親ディレクティブにアクセスする方法はないと思います。Controller
- のような子ディレクティブ テンプレートの ng-model で親の ControllerAs を使用すると、正常に
<input type=“text” ng-model=“fb.formData.formFields.text" />
動作しますが、実行できない処理のために Child ディレクティブのコントローラーから同じものにアクセスする必要があります。 - を削除し
て再度
controllerAs
使用すると、以前と同じように機能しますが、将来の Angular の変更に備えるため$scope
に、 を完全に削除しようとしています。$scope
$scope
これは高度なフォームであるため、さまざまなフォーム セクションを処理するための個別のディレクティブが必要です。また、Angular 1.2 以降、ネストされた分離スコープが許可されていないため、特に使用を取り除こうとすると、さらに困難になりControllerAs
ます。
ここで私のオプションは何ですか?私の長い文章を読んでいただきありがとうございます。
javascript - angular「構文としてのコントローラー」「この」データ
何が欠けているのか理解できません
HTMLで結果が得られないcontrollerAs
構文で管理するこの問題だと思います
注:コンソールで結果を確認できますconsole.log(this.movie);
-コントローラーから
app.js
controller.js
html - テンプレート/detail.html
私の試み