javascript - 如何深度观察AngularJS中排除指定模式的对象?

标签 javascript angularjs

有一个具有某些属性的嵌套对象,我不想被观看。它可能是一种以“_”开头的属性模式。

这是一个示例结构。

$scope.ObjectToBeWatched = {

  "company": {
    "ts": {
      "_msg": {"nm":""},
      "status": "success"
    },
    "ids": [
      "000000010",
      "000000011"
    ]
  },
  "_f": [
    {
      "code": "TY_IO",
      "status": "fail"
    }
  ]
}

标准深度观察:

$scope.$watch("ObjectToBeWatched",function(newObj,oldObj){

},true);

现在, watch 正在触发任何预期属性的任何变化。因此,在上述情况下,对属性进行任何更改

_msg, _f

不应触发。

感谢您的帮助。

最佳答案

你可以尝试这样的事情:

$scope.$watch(function($scope) {
  return $scope.listOfBigObjects.
      map(function(bigObject) {
        return bigObject.foo.
            fieldICareAbout;
      });
}, myHandler, true);

这仅从数组中的对象中获取您关心的 Prop 。您可以使用表达式来检查对象映射内的某些字段类型。如果您没有数组,请跳过该部分。

如果“map”不完全是您返回您关心的字段所需要的,Underscore 有大量的函数方法可以帮助您完成此任务。

关于javascript - 如何深度观察AngularJS中排除指定模式的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31372216/

相关文章:

javascript - 闭包编译器的正则表达式类型

javascript - jQuery:显示数字范围从/到的div?

javascript - 使用日期函数javascript

javascript - 根据 AngularJS 中的多个条件更改复选框状态

javascript - 如何执行每 3 秒返回数组项目的 ng-repeat

javascript - 使用 Angular 选择未按预期工作

javascript - 如何将数据从指令函数传递到服务?

javascript - Node.js 和同步 API 函数

javascript - 如何将页面中以文本形式表示的 IP 地址替换为其 IP 位置(例如 "Country, Region, City")

javascript - 将 AngularJS ng-form 对象传递给 ng-if?