ฉันมีหน้าเว็บที่ทำหน้าที่เป็นตัวแก้ไขสำหรับเอนทิตีเดียวซึ่งอยู่ในรูปกราฟลึกในคุณสมบัติ $ scope.fieldcontainer หลังจากที่ฉันได้รับการตอบกลับจาก REST API ของฉัน (ผ่าน $ resource) ฉันเพิ่มนาฬิกาใน 'fieldcontainer' ฉันใช้นาฬิกาเรือนนี้เพื่อตรวจสอบว่าหน้า / เอนทิตีเป็น "สกปรก" ตอนนี้ฉันกำลังทำให้ปุ่มบันทึกเด้ง แต่จริง ๆ แล้วฉันต้องการทำให้ปุ่มบันทึกไม่ปรากฏจนกว่าผู้ใช้จะทำให้รูปแบบสกปรก
สิ่งที่ฉันได้รับคือสิ่งกระตุ้นหนึ่งของนาฬิกาซึ่งฉันคิดว่าจะเกิดขึ้นเพราะ. fieldcontainer = ... การมอบหมายจะเกิดขึ้นทันทีหลังจากที่ฉันสร้างนาฬิกาขึ้นมา ฉันกำลังคิดว่าจะใช้คุณสมบัติ "dirtyCount" เพื่อรับสัญญาณเตือนที่ผิดพลาดครั้งแรก แต่รู้สึกว่าแฮ็คมาก ... และฉันคิดว่าต้องมีวิธี "เชิงมุม" เพื่อจัดการกับสิ่งนี้ - ฉันไม่ใช่คนเดียว ใช้นาฬิกาเพื่อตรวจจับแบบจำลองที่สกปรก
นี่คือรหัสที่ฉันตั้งนาฬิกาของฉัน:
$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);
});
ฉันแค่คิดว่าจะต้องมีวิธีที่สะอาดกว่าการปกป้องรหัส "UI ที่สกปรก" ของฉันด้วย "if (dirtyCount> 0)" ...
undefined
แต่ในกรณีของฉันคำตอบของคุณไม่ทำงานเนื่องจากค่าเก่าของฉันไม่ได้ มีค่าเริ่มต้นซึ่งจำเป็นในกรณีที่การอัปเดตโมเดลของฉันไม่ได้เกิดขึ้นกับข้อมูลทั้งหมด ดังนั้นค่าบางอย่างไม่เปลี่ยนแปลง แต่ต้องกระตุ้น