javascript - 使用 Angular js 检测 JS 对象的变化

标签 javascript angularjs object

我有一个 javascript 对象,假设 user 是我的对象的名称,在 Angular js 中它看起来像这样

$scope.user = {
  name:'Arpit',
  class:'Computer Science',
  year:'2017',
  gender:'male'
}

我从数据库中获取该对象并在编辑屏幕中打开,现在如果在 HTML 表单中,如果用户在编辑模式下更改了任何字段,我想使用我的 CSS 类 applyborder 突出显示特定字段。当我更改任何字段值时,我的逻辑第一次起作用,但是当我将值重置为原始值时,应该删除该类,但它并没有删除该类。我的 Angular js 代码是:

            //Value Change Detection
            Object.keys($scope.user).filter(function (key) {
                $scope.$watch('user.' + key, function (newVal, oldVal) {
                    if (newVal != oldVal) {
                        var ele = $('[ng-model="user' + '.' + key + '"]');
                        ele.addClass("applyborder");
                    }
                    else  if(oldVal == newVal){
                        var ele = $('[ng-model="user' + '.' + key + '"]');
                        ele.removeClass("applyborder");
                    }
                });
            });

它将最后输入的值视为oldVal,但它应该对待来自数据库的值。谢谢。

最佳答案

这是 $watch 的预期行为。

您可以使用angular.copy保留从数据库收到的对象的副本:

var originalUser = angular.copy($scope.user)

然后检查:

//Value Change Detection
        Object.keys($scope.user).filter(function (key) {
            $scope.$watch('user.' + key, function (newVal, oldVal) {
                if (newVal != originalUser[key]) {
                    var ele = $('[ng-model="user' + '.' + key + '"]');
                    ele.addClass("applyborder");
                }
                else  if(originalUser[key] == newVal){
                    var ele = $('[ng-model="user' + '.' + key + '"]');
                    ele.removeClass("applyborder");
                }
            });
        });

关于javascript - 使用 Angular js 检测 JS 对象的变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40881211/

相关文章:

javascript - 通过 AJAX 阅读后显示视频 blob

javascript - 以处理错误的方式启动 javascript Promise Bluebird 链

c# - 同一类的析构函数中的对象实例化和垃圾收集

javascript - 如何在文本字段 AngularJS 中验证 IP

AngularJS:测试实际的 $http 请求(不是模拟)以获得 success() 或 error() 案例......?

JavaScript 对象规则

powershell - PowerShell,如何提供管道变量?

javascript - 检索上次发送的消息

javascript - 如何GetVariable() flash类变量?

php - 使用 Splice() 获取正确的索引