2014-10-10 56 views
1

this類似,我想在Chrome中改變一個變量。但是,我正在使用Angular,所以我想打破的變量只在HTML中定義。它基本上是這樣的 -使用Angular在Chrome中改變變量

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

在控制器中沒有代碼。那麼當show更改時,如何讓Chrome暫停?我知道我可以將代碼更改爲一個包裝show的函數調用,然後在那裏放置一個斷點,但是它對時間的使用效率不高,我想知道是否有辦法直接中斷變量更改。

+0

有*是*的方式來做到這一點,但這將是更「無效的時間使用」。你必須在AngularJs的'ng-click'或'$ watch'代碼中放置一個斷點,但是這很可能會被觸發很多次以至於你會不斷碰到斷點 – JoseM 2014-10-10 16:02:16

回答

4

好了,你可以通過控制檯achive所需的功能:

  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);

+1

Object.observe已從Chrome中移除,從Chrome開始50 http://stackoverflow.com/questions/36195945/object-observe-remove-in-chrome-50 – kolobok 2016-10-27 22:34:32