問題タブ [isolate-scope]
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.
angularjs - ディレクティブの ng-change は、後でコントローラーのモデルを更新してから、コールバック メソッドが呼び出されます
ng-model
/ng-change
内部ディレクティブがあります。これらは、属性を通じてコントローラーのスコープに「マップ」されます。ただし、ng-change
が実行されると、コントローラーのスコープはまだ更新されません。常に一歩ずつ遅れています。
なぜこれが発生し、同期させるための推奨される方法は何ですか?ディレクティブから「change」を呼び出すと、コントローラーで「do」を呼び出す必要があり、scope.params.v の値は最新である必要がありますか?
angularjs - UI BootStrap タブの AngularJS ディレクティブ (スコープの問題の分離)
Angular UI ブートストラップ タブを操作するディレクティブを作成しようとしています。
このディレクティブの主な目的は、選択されたタブを記憶することです。
私はそこにあるすべてのソリューションを見てきましたが、コントローラーに設定されていないタブのこの問題に対処するものはないようです:
注「sctab」は私のディレクティブ名です。ここで私は次の作業をしています:
- タブがクリックされると、タブの見出し名として URL ハッシュが設定されます
- リンクをクリックして戻ると、そのハッシュが記憶されます。
- ページの読み込み時に、ハッシュに一致するタブ (または要素) を特定します
ただし、最後のステップで障害物に遭遇しました。
- URL ハッシュに一致するタブをアクティブ化する
このために、以下のコードで確認できるいくつかのことを試しました。完全に機能したものはありません。
アクティブ状態は、「アクティブ」と呼ばれるUIブートストラップタブディレクティブのisolate-scope変数に設定されていると思います。
ngClass もこの変数にバインドされています。
したがって、基本的にここでは、タブをアクティブにしようとして、タブに active = true を設定しようとしました(無駄に)。
詳細に入る前に、ここで立ち止まって、私が試したことに基づいたアイデアを誰かが持っているかどうかを確認します。
これが私の指示です:
javascript - Angular ディレクティブ アイソレート スコープ: スコープ関数は実行されません
分離スコープを持つディレクティブによって (または内部で) 使用される関数を定義する方法を理解するのに苦労しています。$scope.foo()
次のコードで、関数が実行されないのはなぜですか? この問題に取り組むべき正しい方法はありますか? ユーザーがログインしている場合にのみ表示されるボタンを作成しようとしていますが、ディレクティブはその機能をカプセル化/分離するための良い方法になると考えていました。
javascript - ディレクティブのモジュール名の分離スコープを作成するにはどうすればよいですか?
contenteditable
と呼ばれる分離スコープで呼び出されるディレクティブがありますpost: "&"
質問:
Post という分離スコープをデフォルトの contenteditable ディレクティブに置き換えるにはどうすればよいですか。
したがって:現在このように見えるもの
最終的に、html は次のようになります。
angularjs - parent.parent スコープによる双方向バインディング
分離スコープを持つディレクティブが、parent.parent スコープへのバインディングを介して変更を加えていないという問題があります。
要約すると、親プロパティにバインドされているディレクティブのisolateスコープ内のプロパティに加えられた変更は、そのプロパティの親スコープ全体に伝播することを期待しています(プロパティは最初にparent.parentスコープから継承されました) 、しかしそうではありません。直接の親スコープの値のみを変更しますが、parent.parent スコープには古い値があります。さらに悪いことに、parent.parent スコープ プロパティへの変更は、isolate スコープまたはその直接の親にまで及ばなくなりました。これは、Angularスコープが構築されているJavascriptのプロトタイプ継承の通常の動作であることを理解していますが、この双方向データバインディングの場合は望ましくないため、Angularで解決策を探しています.
動作の例を次に示します: http://jsfiddle.net/abeall/RmDuw/344/
私の HTML にはコントローラー div ( MyController1
) が含まれており、その中には別のコントローラー div ( MyController2
) があり、その中にはディレクティブ ( MyDirective
) があります。
Javascript はmyMessage
外側のMyController
スコープで定義し、内側のスコープはディレクティブをMyController2
継承してバインドmyMessage
し、分離スコープ プロパティとして定義します。各レベルで、ローカル メッセージ プロパティを変更する関数が定義されます。message
MyDirective
message
change()
あなたが気付くのは次のことです:
の変更ボタンを数回クリック
MyController1
すると、すべてのレベルが更新されます (下に継承されます)。次に
MyDirective
の変更ボタンをクリックすると、更新されますMyController2
(上にバインドされます) が、まったく変更MyController1
されません。この時点以降、 の変更ボタンをクリックしても、範囲に
MyController1
滴り落ちることはなくなり、その逆も同様です。2人は現在、互いに離れています。これが問題です。MyController2
MyDirective
だから私の質問は:
Angular には、スコープ プロパティ (
myMessage
この場合) のバインディングまたは継承を許可して、親スコープまで細流化する方法がありますか?そうでない場合、ディレクティブのisolateスコープの変更をparent.parentコントローラースコープのプロパティにどのように同期する必要がありますか? ディレクティブは、その親の構造について知ることができません。
javascript - アイソレート スコープを使用した Angular ディレクティブの複数のインスタンスに関するスコープの問題
追加、削除、および編集オプションを使用してテーブルを作成できるテーブル ディレクティブを作成しようとしていました。
HTML
JS (コントローラー)
同様に、2 番目のテーブルの ageData と ageTable 構成を作成しました。
JS (ディレクティブ)
これがフィドルです。
行の削除は最初のテーブルでは機能しますが、2 番目のインスタンスでは機能しません。ageTable で何かを削除しようとすると、userTable の deleteHandler が呼び出されていることがわかりました。これはスコーピングの問題だと推測できますが、これを理解することはできません。
angularjs - ng-model をカスタム ディレクティブに渡して機能させる際の問題
選択項目に国のリストを自動入力するカスタム ディレクティブを作成しました。ディレクティブには preselect isolate スコープ属性があり、true に設定すると国が事前選択されます。
ng-model
また、isolate スコープ属性としても渡されます。問題は、ng-model
設定されないことです。
<auto-countries>
設定できるようにディレクティブを作成する方法について、誰かが私にいくつかの指針を教えてくれますng-model
か?
ここに私のディレクティブのコードがあります:
さらに奇妙なのは、preselect をまったく使用しない単純なバージョンng-model
のディレクティブでは、が設定されることです。
例がないとちょっとわかりにくいので、Plunkr をご紹介します。 http://plnkr.co/edit/e1HPgGQlne7Q4TcNJ9XT?p=preview