$ Scope.fieldcontainer özelliğinde derin bir grafik olarak oturur tek bir varlık için editör olarak hizmet veren bir web sayfam var. REST API'mdan ($ resource aracılığıyla) bir yanıt aldıktan sonra, 'fieldcontainer'a bir saat ekliyorum. Bu saati sayfanın / varlığın "kirli" olup olmadığını tespit etmek için kullanıyorum. Şu anda kaydet düğmesi sıçrama yapıyorum ama gerçekten kullanıcı modeli yönlendirene kadar kaydet düğmesini görünmez yapmak istiyorum.
Ne alıyorum saatin tek bir tetikleyici olduğunu düşünüyorum, çünkü olduğunu düşünüyorum .fieldcontainer = ... atama saatimi oluşturduktan hemen sonra gerçekleşir. Sadece ilk yanlış alarmı emmek için bir "dirtyCount" özelliği kullanmayı düşünüyordum ama bu çok acayip hissediyor ... ve bununla başa çıkmak için "Açısal deyimsel" bir yol olması gerektiğini düşündüm - Ben tek değilim kirli bir modeli tespit etmek için bir saat kullanmak.
İşte saatimi ayarladığım kod:
$scope.fieldcontainer = Message.get({id: $scope.entityId },
function(message,headers) {
$scope.$watch('fieldcontainer',
function() {
console.log("model is dirty.");
if ($scope.visibility.saveButton) {
$('#saveMessageButtonRow').effect("bounce", { times:5, direction: 'right' }, 300);
}
}, true);
});
Ben sadece "if (dirtyCount> 0)" ile "UI kirli" kodumu korumak daha bunu yapmak için daha temiz bir yol olması gerektiğini düşünüyorum devam ...
undefined
. Model güncellememin tüm bilgilerle gelmemesi durumunda gerekli olan varsayılan bir değere sahiptir. Bu yüzden bazı değerler değişmez, ancak tetiklenmesi gerekir.