当前位置: 首页 > 面试题库 >

如何在ng-repeat创建的模型上监视变化?

凌修伟
2023-03-14
问题内容

例如考虑这个Plnkr。我不知道fooCollection将事先创建多少个成员。所以我不知道bar会有多少种模型。

但是我知道它们将成为角度模型,而且我知道它们将在哪里。

我该如何$watch处理这些?

我需要这样做,因为我需要在bar更改模型时触发行为。仅仅观察fooCollection本身是不够的,更改$watcha时侦听器不会触发bar

相关HTML:

<body ng-controller="testCtrl">
  <div ng-repeat="(fooKey, foo) in fooCollection">
    Tell me your name: <input ng-model="foo.bar">
    <br />
    Hello, my name is {{ foo.bar }}
  </div>
  <button ng-click="fooCollection.push([])">Add a Namer</button>
</body>

相关JS:

angular
.module('testApp', [])
.controller('testCtrl', function ($scope) {
  $scope.fooCollection = [];

  $scope.$watch('fooCollection', function (oldValue, newValue) {
    if (newValue != oldValue)
      console.log(oldValue, newValue);
  });
});

问题答案:

创建单独的列表项控制器:Plnkr上的演示

js

angular
  .module('testApp', [])
  .controller('testCtrl', function ($scope) {
    $scope.fooCollection = [];
  })
  .controller('fooCtrl', function ($scope) {
    $scope.$watch('foo.bar', function (newValue, oldValue) {
      console.log('watch fired, new value: ' + newValue);
    });
  });

HTML

<html ng-app="testApp">
  <body ng-controller="testCtrl">
    <div ng-repeat="(fooKey, foo) in fooCollection" ng-controller="fooCtrl">
      Tell me your name: <input ng-model="foo.bar" ng-change="doSomething()">
      <br />
      Hello, my name is {{ foo.bar }}
    </div>
    <button ng-click="fooCollection.push([])">Add a Namer</button>
  </body>
</html>


 类似资料:
  • 问题内容: 我知道AngularJS在ng-repeat上设置了一些监视。此时设置了哪种手表? 另外,有人可以解释在每种情况下会发生什么吗?我想知道我有很多物品,所以如果我用其他方式写的话,不会被那些本可以淘汰的手表所困扰。 之一 二 三 四个 问题答案: 每个人都会在上设置一个$ watch 。(如果您查看ng- repeat源代码 ,则其中大多数是$ watch方法的watchExpressi

  • 问题内容: 我正在尝试使用bootstrap 3和angularjs创建一个网格。 我要创建的网格就是这个,使用ng-repeat重复进行。 我试着用with 添加行,但这似乎行不通。任何建议都会很棒! 谢谢! 编辑:这是我最终使用的代码: 问题答案: 这是一个老答案! 撰写本文时,我对Angular还是有点陌生​​。Shivam下面有一个更好的答案,我建议您改用它。它使表示逻辑不会进入您的控制器

  • 问题内容: 我有一个使用ng- repeat创建的表。我想向表中的每个元素添加验证。问题在于每个输入单元格与其上方和下方的单元格名称相同。我试图使用该值来命名输入,但是尽管HTML中的字符串文字看起来正确,但现在可以正常工作。 到目前为止,这是我的代码: 我试过从索引中删除from,但是那也不行。到目前为止,输入的验证属性可以正常工作,但是不会显示错误消息。 有人有什么建议吗? 编辑: 除了以下出

  • 问题内容: 我剖析了ng-repeat并提取了附加的代码块,看到它们包含处理 重复 算法的逻辑(我想了解它的工作原理)。 我有很多问题,但是由于它们都是关于ng- repeat的内部结构,因此我选择在这里全部询问。我看不出有任何理由将它们分为不同的SO问题。我已标记内联每个问题所指向的代码行。 为什么他们需要确保这不是本机函数?(这就是该功能的作用,是Angular内部API的一部分) 就我的直觉

  • 问题内容: 我试图了解over 的意义。角度文档提供了以下示例 但是,使用, 有人可以解释。的意义吗?谢谢。 问题答案: 这两个指令的含义相似:它们重复HTML标记。所不同的只是,在您的帮助下,您可以重复几个标签,从标签开始于,再到完成于。 例如,您有下一个代码: 因此,现在我们可以为这些代码添加2个指令。 与: 与和: 因此,现在您可以看到,在第一种情况下,仅使用指令重复,但是在第二种情况下,您

  • 问题内容: 我想在由两个数组组成的数组上执行ng-repeat,如下所示: 我的数组(标题和链接)具有相同的长度,最后我想在ng-repeat中打印的内容是这样的: 例如,在C程序中,我必须这样做: 问题答案: 尚不清楚您如何拥有数据- 没有意义。 理想情况下,您可以将数据排列为如下所示的对象数组: 然后,您可以使用: 如果您 知道 标题和链接的大小始终相同,则可以这样做,但是它不是很漂亮,并且可