Kullanıcıları bir listeye ekleyebileceğim ve kaldırabileceğim basit bir uygulama var. Bir öğeyi kaldırırken açısal kapsam güncellenmiyor
şekilde
yeni bir kullanıcı$scope.newPerson
bağlanan ekleyin. Formu gönderirken,
person
nesnelerini içeren bir dizi olan
$scope.people
'a
newPerson
nesnesini ekliyorum.
ng-repeat
yönergesi ile people
dizisinin üzerine, kapsamı şu anda eklenmiş olan kişileri yazdırmak için kullanıyorum. Ben Kaldır düğmesini tıkladığımızda, bu işlevi gerçekleştirmek
div.row(data-person, ng-repeat="person in people", ng-model="person")
button(ng-click="removePerson(person)") Remove
: Bu satırlar bütün (Yeşim pasajı) bir kaldırma düğmesi bulunur Bu tablodan satırı kaldırır
$scope.removePerson = function(person) {
var index = $scope.people.indexOf(person);
if (index > -1) {
$scope.people.splice(index, 1);
person = null;
}
}
ve person
setleri kapsamı null
. Batarang, daha sonra { This scope has no models }
gösterir.
Ancak, benim people
dizi güncelleme olmadığını fark etmiş. Batarang’daki kapsamı kontrol ettiğimde, yeni sildiğim kişi hala o dizide. Yeni bir kişi eklemek için yazmaya başladığımda, güncellenir. Tüm sayfayı sunucumdan bunu yapmadan gönderirseniz, dizi hala kaldırılmış kişileri içerir.
person = null;
sonra
$scope.$apply()
koyarsanız
, ben ancak bir apply is in progress
bir hata atar, beklenen davranışı olsun. Ayrıca, $apply()
numaralı telefonu arayarak okumanın kötü bir uygulama olduğunu düşünüyorum. (?)
Ben Açısal yeniyim ve bu sorunu çözme konusunda birçok bilgi bulmak için görünmüyor olabilir. Bir kişiyi kaldırdığımda dizimi güncellemeyi nasıl yapabilirim? Teşekkürler.
mümkün mü? Bir kapsam sorunu olduğuna inanıyorum, ancak tüm kapsamları/yönergeleri/denetleyicilerinin nasıl kurulduğunu görmek için sağladığınız bilgiler yeterli değil. – dtabuenc
BTW, kişi = null, işlev içinde null değerine kişiyi ayarlama dışında bir şey yapmıyor (bu işlevin dışındaki kişiyi değiştirmez). Ayrıca, siz haklısınız, kendinizi asla aramamalısınız (harici bir etkinliğe yanıt olarak bir direktif dışında). – dtabuenc