我有一個簡單的應用程序,可以將用戶添加到列表中並將其刪除。刪除項目時角度範圍不會更新
添加新用戶的表單綁定到$scope.newPerson
。在提交表單時,我將newPerson
對象添加到$scope.people
這是一個包含person
對象的數組。
我使用ng-repeat
指令遍歷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檢查它的範圍時,我剛剛刪除的人仍在該陣列中。當我開始輸入以添加新人時,它會更新。如果我不提交整個頁面到服務器,數組仍然包含已刪除的人員。
如果我在person = null;
之後放$scope.$apply()
,我會得到預期的行爲,但它會拋出一個錯誤,即apply is in progress
。我也讀取自己被稱爲$apply()
被認爲是不好的做法。 (?)
我是Angular的新手,我似乎無法找到有關解決此問題的大量信息。當我移除一個人時,如何更新我的陣列?謝謝。
是否有可能爲你創造一個快速的jsfiddle或plnkr那你演示功能的問題?我相信這是一個範圍問題,但是您提供的信息不足,無法看到您的示波器/指令/控制器是如何設置的。 – dtabuenc
順便說一句,person = null除了在函數中將人設置爲null(它不會改變函數外的人)之外,沒有其他任何操作。此外,你是正確的,你永遠不應該打電話給自己(除了在一個外部事件響應指令)。 – dtabuenc