相关疑难解决方法(0)

AngularJS在对象数组中观察对象属性

data在控制器中有这个

    $scope.data = {
        home: {
            baseValue: "1",
            name: "home"
        },
        contact: {
            baseValue: "2",
            name: "contract"
        }
     // a lot more options
    };
Run Code Online (Sandbox Code Playgroud)

有一些像这样的HTML:

<section class="content row" ng-repeat="item in data">
   {{item.name}}
   ....
</section>
Run Code Online (Sandbox Code Playgroud)

现在,我想知道什么时候发生了baseValue变化,但由于我在数据变量中使用了一个对象,我不能watch以更简单的方式使用该属性.

我尝试过类似的东西,但我必须循环所有数组

$scope.$watch('data', function (newValue, oldValue, scope) {
 // some code to compare the tow arrays, line by line
}, true);
Run Code Online (Sandbox Code Playgroud)

我怎样才能更简单$watch地知道什么时候baseValue改变了?

类似的问题:

更新 1

我可以为每个对象添加一个单独的监视器,以便知道何时baseValue更改,但如果我有n多个对象,不仅仅是像这个示例中的几个对象那样也不会很好

$scope.$watch('data.home', function (newValue, …
Run Code Online (Sandbox Code Playgroud)

javascript angularjs

51
推荐指数
3
解决办法
6万
查看次数

AngularJS $ watch vs $ watchCollection:哪个性能更好?

对于观看的对象范围内的变量,是$scope.$watchobjectEquality设置为true或$scope.$watchCollection更好?

对于一个$scope对象变量(如15点的属性,一些嵌套2级深)与输入元件和更新ng-model在视图中,是怎样坏$scope.$watchobjectEquality设置为true?这是一件要避免的大事吗?

$watchCollection更好的解决方案吗?

我正在寻找轻松获胜以提高我的AngularJS App的性能(我仍然坚持v1.2.2).

  // ctrl scope var
  $scope.filters = {
    name: '',
    info: {test: '', foo: '', bar: ''},
    yep: ''
    // etc ...
  }

  // ctrl watch ?
  $scope.$watch('filters', function(newVal, oldVal) {
    if(newVal !== oldVal) {
      // call with updated filters
    }
  }, true);

  // or ctrl watch collection ?
  $scope.$watchCollection('filters', function(newVal, oldVal) {
    if(newVal !== oldVal) {
      // …
Run Code Online (Sandbox Code Playgroud)

angularjs angularjs-scope angularjs-watch

40
推荐指数
2
解决办法
5万
查看次数

如何观看整个对象?

我有一个十个对象的数组.它们中的每一个都包含六个属性并在视图中显示所有内容.用户可以通过在输入上键入新数据来更改属性.如何查看整个数组并确定哪个对象已更改的属性,并且不重复我的代码10次以分别观察每个对象?

javascript angularjs

0
推荐指数
1
解决办法
43
查看次数