4

最新の安定した Chrome で Angular の最新の安定したバージョンを実行します。ng コントローラー A を持つビュー内にある DOM 要素で ng-click がありますが、DOM 要素自体には別のコントローラー B に設定された ng-controller があります。コントローラー B 内で ng-click が発生しますが、スコーププロパティが変更されますng-model 属性によってバインドされている DOM 要素は反映されません。

具体的には、テキストエリアと他の HTML5 入力タイプがあります。エラーはありません。デバッガーを中断すると、スコープ変数を見て、$scope が実際にコントローラー B を指していることを確認できます。

ここの Plnkr の例では、同じ DIV 内にある入力のみを更新する方法に注意してください: http://plnkr.co/edit/DmccNj?p=preview

4

1 に答える 1

7

私は最近同じ問題を抱えていました。どうやら、同じng-controllerで 2 つの HTML フラグメントを作成すると、コントローラーの 2 つの別個のインスタンスが作成されるようです。したがって、「EDIT」ボタンを押す$scope.commentとインスタンス 1 に設定されますが、入力フィールドはコントローラーのインスタンス 2 にバインドされます。

この方法で行う必要がある場合は、シングルトンであるため、angular サービスを作成するのが最善です。

ここに私の質問があります: 1 つのコントローラーの HTML コンポーネントを分割すると、コントローラーが機能しなくなります

また、Angular Batarangは、AngularJS チームによる Angular アプリケーションをデバッグするための非常に優れた Chrome 拡張機能です。あなた(または私)がこれを使用していれば、何が問題なのかがすぐにわかったので、これについて言及します。

于 2013-04-03T00:26:06.003 に答える