【问题标题】:Break on variable change in Chrome using AngularJS使用 AngularJS 打破 Chrome 中的变量变化
【发布时间】:2014-12-05 18:44:57
【问题描述】:

类似于this 问题,我想打破 Chrome 中的变量更改。但是,我使用的是 Angular,所以我想中断的变量只在 HTML 中定义。它本质上是这样的 -

<div ng-click="show = !show">...<div>
<div ng-class="{expanded : show}">...

控制器中没有代码。那么,当show 更改时,如何让 Chrome 暂停?我知道我可以将代码更改为包装show 的函数调用,然后在那里放置一个断点,但它对时间的利用效率低下,我想知道是否有办法直接中断变量更改。

【问题讨论】:

  • 有一种方法可以做到这一点,但它会更加“低效地利用时间”。您必须在 AngularJs 的 ng-click$watch 代码中放置一个断点,但这很可能会被触发很多次,以至于您会不断地遇到断点

标签: javascript html angularjs google-chrome breakpoints


【解决方案1】:

好吧,您可以通过控制台实现所需的功能:

  1. 首先访问定义了show 属性的范围。 Here 是如何做到这一点的解释。
  2. 那么你可以通过Chrome的Object.observe观察这个范围对象的变化。

为了简化这个过程,你可以定义像这样的全局函数:

function breakOn(property, object) {
    Object.observe(object, function (changes) {
      changes.forEach(function (change) {
        if (change.name === property) {
          console.log("Property " + property + " changed");
          console.log(change);
          debugger;
        }
      });
    });
  }

然后在第 1 步之后在控制台中输入:breakOn('show', $scope);

【讨论】:

猜你喜欢
  • 2015-07-25
  • 2015-11-10
  • 1970-01-01
  • 2018-08-12
  • 2019-03-20
  • 1970-01-01
  • 1970-01-01
  • 2020-02-22
相关资源
最近更新 更多