我有一个网页可以用作单个实体的编辑器,它位于$ scope.fieldcontainer属性中的深层图形中。从REST API获得响应(通过$ resource)后,将手表添加到“ fieldcontainer”。我正在使用此手表来检测页面/实体是否为“脏”。现在,我正在使“保存”按钮弹跳,但实际上我想使“保存”按钮不可见,直到用户弄脏模型为止。
我得到的只是手表的一个触发器,我认为这是在发生,因为.fieldcontainer = ...分配是在创建手表后立即进行的。我本来只是想使用“ dirtyCount”属性来吸收最初的错误警报,但是感觉很hacky……而且我认为必须有一种“ Angular惯用的”方式来处理此问题-我不是唯一的人用手表检测脏模型。
这是我设置手表的代码:
$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);
});
我一直在想,有一种比使用“ if(dirtyCount> 0)”保护我的“ UI污染”代码更干净的方法了……
undefined
。它有一个默认值,在我的模型更新未提供所有信息的情况下这是必需的。因此,某些值不会改变,而必须触发。