最佳答案
我有一个 Web 页面,用作单个实体的编辑器,该实体作为 $scope.fieldContainer 属性中的深度图形。在从 REST API (通过 $resource)获得响应之后,我将一个 watch 添加到‘ 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);
});
我只是一直在想,一定有比用“ if (dirtyCount > 0)”来保护我的“ UI 脏”代码更干净的方法... ..。