Tôi có một trang web đóng vai trò là trình soạn thảo cho một thực thể duy nhất, nằm dưới dạng biểu đồ sâu trong thuộc tính $ scope.fieldcontainer. Sau khi tôi nhận được phản hồi từ API REST (thông qua tài nguyên $), tôi thêm đồng hồ vào 'người điều khiển trường'. Tôi đang sử dụng đồng hồ này để phát hiện xem trang / thực thể có "bẩn" không. Ngay bây giờ tôi đang làm cho nút lưu bị trả lại nhưng thực sự tôi muốn làm cho nút lưu trở nên vô hình cho đến khi người dùng điều chỉnh mô hình.
Những gì tôi nhận được là một kích hoạt duy nhất của đồng hồ, điều mà tôi nghĩ đang xảy ra bởi vì .fieldcontainer = ... việc chuyển nhượng diễn ra ngay sau khi tôi tạo đồng hồ. Tôi đã nghĩ đến việc chỉ sử dụng một tài sản "DirtCount" để hấp thụ báo động sai ban đầu nhưng cảm giác rất khó chịu ... và tôi nghĩ rằng phải có một cách "thành ngữ góc cạnh" để đối phó với điều này - tôi không phải là người duy nhất sử dụng đồng hồ để phát hiện một mô hình bẩn.
Đây là mã nơi tôi đặt đồng hồ:
$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);
});
Tôi chỉ nghĩ rằng phải có một cách sạch hơn để làm điều này hơn là bảo vệ mã "UI bẩn" của tôi bằng một "if (DirtCount> 0)" ...
undefined
. Nó có một giá trị mặc định là cần thiết trong trường hợp cập nhật mô hình của tôi không đưa ra tất cả thông tin. Vì vậy, một số giá trị không thay đổi mà phải kích hoạt.