【问题标题】:How to track scope variable changing in AngularJS如何在 AngularJS 中跟踪范围变量的变化
【发布时间】:2015-12-07 02:12:21
【问题描述】:

全部:

我是 AngularJS 的新手,目前我想做的是找出哪一行导致 $watch 处理函数被调用。

举个小例子:

我设置$scope.name = ""并调用函数changeName()

function changeName(){
    $scope.name = "new Name";
    ...

    $http.get("someurl")
         .then(function(data){ $scope.name = data.newname;   })
}

$scope.$watch("name", function(newName, oldName){
    handlingfunctionHere();
});

$scope.name 有多项更改导致$scope.$watch 触发,但是当我在 chrome 中调试时,我无法判断哪个操作导致从调用堆栈触发,谁能告诉我如何调试这个?

谢谢

【问题讨论】:

  • @PankajParkar 谢谢,老实说,我对 AngularJS 太陌生,无法完全理解这一点,你能举个例子或小提琴吗?
  • 但这并不能完全确定价值从哪里得到更新..
  • 如果你想跟踪$scope.name$http之后的变化,你可以使用不同的变量
  • @maddog 谢谢,但我想要的就像 Pankaj Parkar 所说的那样,我想知道该名称变量在哪里更新,这会导致 $watch 的触发
  • @Kuan 基本上我被建议你使用$parser & $formatters 确实可以访问$viewValue & $modalValue stackoverflow.com/questions/22841225/… 。但这种方式是不可能的..

标签: angularjs


【解决方案1】:

抱歉,我需要告诉你这一点,也许你会感到失望,因为正如你所说,你是 AngularJS 的新手,但真正的事实是,你无法通过简单的调试知道在 watch 处理程序中设置断点。

作为参考,我将添加来自 Misko 本身的 post,他解释了角度数据绑定的工作原理以及它的优点和缺点。这是没有提到的缺点之一,但对我来说仍然不是什么大问题,因为 IMO 的好处更大。

这只会使调试变得更加困难,因为您需要手动找到可以进行更改的所有位置并在那里设置断点。也可以在调用 watch 处理程序之前进行一些更改。

【讨论】:

  • 谢谢,这是一个非常令人失望的答案,但我会接受这个事实,直到有人提出解决方案。
猜你喜欢
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-15
  • 1970-01-01
相关资源
最近更新 更多