8

ui-bootstrap モーダル スコープに奇妙な点があることに気付きました。その中で ng-model を使用する場合、 $parent を参照してモーダルコントローラーのスコープに到達する必要があるようです。ng-options などの他のプロパティは $parent を必要としないことに注意してください: http://plnkr.co/edit/xGSHz4EkZvGr2D6CUeBz?p=preview

理由はありますか?ここで同様の問題を見つけました: Angular UI modal のスコープの問題

$parent の変更を試みることになりましたが、十分な評判がないため、そのスレッドについてコメントすることはできません。

範囲が変わるように見える理由は何ですか?

ありがとう!

4

1 に答える 1

14

モーダルには独自のスコープがあり (私は Angular UI を使用したことがありませんが、それが唯一の可能性です)、「selectedLocation」を設定すると、コントローラーのスコープではなくモーダルのスコープにプロパティが設定されます。$parent はコントローラーのスコープを取得するように強制していますが、モーダルの親が「モデル」を持っていると常に想定して、特定の構造に自分自身をロックするため、これは良い解決策ではありません。

これは、コントローラー スコープでモデル オブジェクトを使用して修正されたプランカーです (model.selectedLocation を使用) http://plnkr.co/edit/B5kZaIA5xi2RediUTBK7?p=preview

とにかく、「$scope.model.selectedLocation」のようなものにプロパティを配置すると、動作が変わります。ここで、モーダルで「model.selectedLocation」を参照すると、モーダルのスコープにモデル オブジェクトがないため、Angular はスコープ チェーンをコントローラーのスコープ (モデル オブジェクトがある) に移動します。

John Lindquist のこのビデオを見てください。私よりもずっとうまく説明できると思います。:-) http://egghead.io/lessons/angularjs-the-dot

于 2013-09-24T21:26:55.667 に答える