2015-09-10 4 views
1

Все:Как отслеживать области видимости переменного изменения в AngularJS

Я новичок в 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 курок, но когда я отладки в хроме, я могу не сообщите, какое действие приведет к этому запуску из стека вызовов, может ли кто-нибудь показать мне, как отлаживать это?

Благодаря

+0

@PankajParkar Спасибо, честно говоря, я слишком новичок в AngularJS, чтобы полностью понять это, не могли бы вы привести пример или скрипку? – Kuan

+0

, но это не дает полной гарантии, откуда значение обновляется. –

+0

вы можете использовать другую переменную, если хотите отследить, когда изменяется '$ scope.name' после' $ http' – batmaniac7

ответ

1

Жаль, что мне нужно будет сказать вам это, может быть, вы будете разочарованы, потому что, как вы сказали, что вы новичок с AngularJS, но истинная правда в том, что вы не можете знать, с простой отладки, как поставив точку останова в обработчике часов.

В качестве ссылки я добавлю это post из самого Мишко, где он объясняет, как работает привязка угловых данных и каковы преимущества и недостатки. Это один из недостатков, который не упоминается, но все же для меня не большая проблема, потому что ИМО выгоды больше.

Это просто делает отладку более сложной, потому что вам нужно будет вручную найти все места, где могут быть сделаны изменения, и поставить там точку останова. Также возможно внесение нескольких изменений перед вызовом обработчика часов.

+0

Спасибо, это очень разочарованный ответ, но я буду принимать эту истину, пока кто-то не предложит решение. – Kuan