AnglarJS限定$scopeの範囲例詳細
1481 ワード
$scopeの範囲を限定します.
JavaScriptは、プロトタイプの継承と対象におけるクラスの継承によって微妙な違いがありますが、これは通常は問題ではありません.AngullarJSでは、各$scopeは父$scopeを継承し、最高層は$root Scopeと呼ばれています.($scopeは従来の命令とは異なり、一定の作用範囲iを有し、明示的な声明の属性のみを継承する.)
プロトタイプ継承の特徴で、親と子の間でデータを共有することはあまり重要ではありませんが、注意しないと親のscopeのプロパティを誤用しやすくなります.
例えば、ナビゲーションバーにユーザー名を表示する必要があります.このユーザー名はログインフォームに入力されます.以下のような試みは動作可能です.
ロゴCtrlを選択したら、原型継承がどのように行われているかを理解したかもしれません.
文字面の値を検索すると、プロトタイプチェーンは機能しません.navCtrlも同時に更新されるなら、プロトタイプチェーンの検索が必要です.しかし、値がオブジェクトであれば、発生します.(javascriptでは関数、配列、オブジェクトは対象として覚えてください.)
したがって、意図された挙動を得るためには、navCtrlにオブジェクトを作成する必要があります.これはlogin Ctrlによって参照されます.
これはとても作為的な例のように見えますが、あるコマンドを使ってサブ$scopeを作成します.例えば、ngRepeatのような場合、この問題は発生しやすいです.
読んでくれてありがとうございます.みなさんのご協力をお願いします.ありがとうございます.
JavaScriptは、プロトタイプの継承と対象におけるクラスの継承によって微妙な違いがありますが、これは通常は問題ではありません.AngullarJSでは、各$scopeは父$scopeを継承し、最高層は$root Scopeと呼ばれています.($scopeは従来の命令とは異なり、一定の作用範囲iを有し、明示的な声明の属性のみを継承する.)
プロトタイプ継承の特徴で、親と子の間でデータを共有することはあまり重要ではありませんが、注意しないと親のscopeのプロパティを誤用しやすくなります.
例えば、ナビゲーションバーにユーザー名を表示する必要があります.このユーザー名はログインフォームに入力されます.以下のような試みは動作可能です.
{{user}}
{{user}}
では、問題が来ました.text inputにuserのng-modelが設定されています.ユーザーがその中に内容を入力すると、どのモデルが更新されますか?navCtrlですか?それともlogin Ctrlですか?それともいずれもできますか?ロゴCtrlを選択したら、原型継承がどのように行われているかを理解したかもしれません.
文字面の値を検索すると、プロトタイプチェーンは機能しません.navCtrlも同時に更新されるなら、プロトタイプチェーンの検索が必要です.しかし、値がオブジェクトであれば、発生します.(javascriptでは関数、配列、オブジェクトは対象として覚えてください.)
したがって、意図された挙動を得るためには、navCtrlにオブジェクトを作成する必要があります.これはlogin Ctrlによって参照されます.
{{user.name}}
{{user.name}}
現在は、userが対象であるため、プロトタイプチェーンが機能し、navCtrlテンプレートと$scopeとloginCtrlが更新されます.これはとても作為的な例のように見えますが、あるコマンドを使ってサブ$scopeを作成します.例えば、ngRepeatのような場合、この問題は発生しやすいです.
読んでくれてありがとうございます.みなさんのご協力をお願いします.ありがとうございます.