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

angularjs $ watch旧值和新值相同

苗盛
2023-03-14
问题内容

我的目的是观察范围内的模型,并找出旧值和新值之间的差异。

但是,我发现以下代码中的旧值和新值都相同。

app.controller('MyCtrl', function($scope, $timeout){
  $scope.markers = {};
  $scope.$watchCollection('markers', function(newValue, oldValue){
    console.log('being watched oldValue:', oldValue, 'newValue:', newValue);
  });
  $timeout( function() {
    $scope.markers.foo = 1;
  }, 500);
  $timeout( function() {
    $scope.markers.bar = 2;
  }, 500);
});

输出:

being watched oldValue: Object {} newValue: Object {} script.js:6
being watched oldValue: Object {foo: 1} newValue: Object {foo: 1} script.js:6
being watched oldValue: Object {foo: 1, bar: 2} newValue: Object {foo: 1, bar: 2}

它们为什么相同,如果是故意的,为什么?

这是代码,http://plnkr.co/edit/rfMCF4x6CmVVT957DPSS?p=preview


问题答案:

您可以$watch改用,这似乎可行。如果您还想监视对象上的所有属性(如您所做的那样),则需要将true第三个参数添加到监视中。这建立了一个深层的监视。

这是一个正在工作的家伙。

JS:

app = angular.module('myApp',[]);

app.controller('MyCtrl', function($scope, $timeout){
  $scope.markers = {};
  $scope.$watch('markers', function(newValue, oldValue){
    console.log('being watched oldValue:', oldValue, 'newValue:', newValue);
  }, true);
  $timeout( function() {
    $scope.markers.foo = 1;
  }, 500);
  $timeout( function() {
    $scope.markers.bar = 2;
  }, 500);
});


 类似资料:
  • 我在树状图中有数据,我使用ObservableList来渲染地图数据。我需要直接在TableView上编辑字符串值。问题是,如何更改TreeMap上的真实数据,即如何从数据列表中获取旧的和新的str值以将其放入map键中。 getOldValue方法不起作用。我用这个方法得到的只是新值。

  • 问题内容: 我有一个名为表,其中有一个名为列,并充满了相同的数字的,等等。 我生成了一个列表,其中包含新的商品编号,它将替换旧的商品编号: 我有一个查询,希望可以解决该查询,但是以某种方式它什么也没做。 (当然,我已将其他值嵌套到查询中) 我如何在这样的列中获取将旧值替换为新值的查询? 问题答案: 您只是在选择新替换的值,而不对它们进行任何操作…在使用replace时,这是一个很好的主意,请始终先

  • 我在运行我的项目时面临着这个问题。情况是,我有一个按钮,让我打印表中的输出。但是,每次单击按钮时,表都是追加的,而不是替换旧值。对于jtextarea,我使用了一种简单的方法来解决它,即使用而不是使用。这就是我如何将值传递到表我将row声明为vector。谁能告诉我如何让它替换值而不是追加。

  • 有点像这里描述的问题如何比较反应挂钩使用效果的旧值和新值? 但是在我的例子中,hook没有帮助。 想象一下这个表单有几个输入、选择等等。你可能想看看https://app.uniswap.org/#/swap 进行类似的可视化。几乎任何更改都会发生多个操作和数据更新,这将导致多次重新渲染,至少4次。例如 我有两个输入,每个代表一个标记。基础(第一个)和报价(第二个)。 这是基地的状态 并引用 他们

  • 问题内容: 这是一个后续问题,用于检索给定修订版本的审计实体名称,旧值和新值 我已经弄清楚了如何获得实体的两个修订版,但是很难找到两者之间的区别。envers中有什么可以帮助对不同修订版本的实体进行比较?还是任何好的图书馆? 如果可以修改属性(_mod)字段字段,我将非常酷。 问题答案: 因此,我想使生活更轻松的是创建一个注释,以标记我有兴趣比较的字段。没有,我最终不得不坚持命名对话,就像仅使用以

  • 问题内容: 我在使用自定义指令时遇到问题,这使我发疯。我正在尝试创建以下自定义(属性)指令: 这个“属性类型”指令(称为seatMap)试图显示一个席位ID列表(例如,一个剧院),我将通过$ resource服务(请参见下面的代码)从服务器获取该ID到div(元素) 。 我将其与以下简单的部分html一起使用: 这是正在加载示波器的控制器: 其中“ Seats”是使用$ resources从服务器