javascript - AngularJS 中的对象比较

标签 javascript angularjs

我有一个表单,加载时会向服务器发送 GET 请求并接收将存储在“master”中的数据,然后我将该数据复制到“local”,如下所示。

$scope.dirty = false;

init(data);

function init(data) {
    $scope.master = angular.copy(data.data);
    $scope.local = angular.copy($scope.master);
}

现在,我使用本地对象作为表单的模型,并且必须单击“提交”和“重置”按钮。我观察本地对象如下。

  $scope.$watchCollection('local', function (newLocal, oldLocal) {
    $scope.dirty = !angular.equals(newLocal, $scope.master);
});

所以,如果 dirty 为真,那么我可以知道数据已被修改,但由于我使用对象 AngularJS 将 $$hasKey 添加到 $scope.local ,因此 $scope .dirty 始终设置为 true。

那么,有什么办法可以解决这个问题吗?我是 AngularJS 的新手,所以这可能是一个有趣的问题,但我被困住了。

最佳答案

你可以convert your object比较之前转换为 JSON 字符串:

function init(data) {
    // store json data into $scope.master for later comparison
    $scope.master = angular.toJson(data.data);
    $scope.local = angular.copy(data.data);
}

$scope.$watchCollection('local', function (newLocal, oldLocal) {
    var json = angular.toJson(newLocal); // new local without $$ key
    $scope.status.dirty = !angular.equals(json, $scope.master);
    // $scope.local is still a javascript object
});

关于javascript - AngularJS 中的对象比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35814902/

相关文章:

javascript - Ajax 最佳实践

JavaScript OOP 概念 - 属性

javascript - 数据请求有时是异步的

javascript - ui-router html5Mode 不喜欢静态 html 文件的 href

javascript - 将 JSON 数据中的 "\"替换为 null

javascript - Angular 两次定义参数

javascript - Materialise css 视差图像在导航到不同的路线然后返回后消失

Javascript:获取键入的 CSS 值而不是计算值

java - 如何将 Javascript 数组结果输入到 Java 中?

javascript - 当我尝试用半透明蒙版覆盖时显示的 Froala textarea