ユーザーをリストに追加して削除できる単純なアプリケーションがあります。アイテムを削除したときに角度範囲が更新されない
新しいユーザーを追加するフォームは、$scope.newPerson
にバインドされます。フォームを送信する際に、オブジェクトをperson
オブジェクトを含む配列である$scope.people
に追加します。
ディレクティブで配列people
をループし、現在スコープに追加されている人物を表示します。これらの行はすべて削除ボタン(ジェイドスニペット)を持っている:私は、[削除]ボタンをクリックすると
div.row(data-person, ng-repeat="person in people", ng-model="person")
button(ng-click="removePerson(person)") Remove
、私はこの機能を実行します。
3210これは、テーブルから行を削除し、person
を設定し、スコープはnull
です。その後、Batarangは{ This scope has no models }
と表示されます。
しかし、people
アレイが更新されないことに気付きました。私がBatarangの範囲であることを確認すると、私が削除したばかりの人物はまだ配列に残っています。新しい人物を追加するために入力を開始すると、その人物が更新されます。これを行わずにページ全体を私のサーバーに提出すれば、配列には依然として削除された人が含まれます。
$scope.$apply()
をperson = null;
の後に置くと、予想通りの動作が得られますが、エラーはapply is in progress
です。私も$apply()
と呼ぶことを読んで、自分自身が悪い習慣とみなされます。 (?)
私はAngularを使い慣れていません。この問題を解決するための多くの情報を見つけることはできません。私は人を削除すると、私の配列を更新する方法は?ありがとう。 ng-repeat
ブロック上
これ以上ng-model
:
が、それは可能ですか?スコープの問題だと思いますが、スコープ/ディレクティブ/コントローラがどのように設定されているかを確認するために提供した情報には十分な情報がありません。 – dtabuenc
ところで、person = nullは、関数内でpersonをnullに設定する以外は何もしません(関数外の人は変更されません)。また、あなたは正しいです、あなたは決してあなた自身を(外部のイベントに応じて指令の中で)呼び出すべきではありません。 – dtabuenc