Как отладить, что меняет текст в текстовом поле в angularjs?
У меня ошибка. Я нахожусь на странице 1, которая имеет поле электронной почты. Я меняю адрес электронной почты в этом поле и нажимаю ссылку на go на другую страницу (изменения маршрута). Затем я go возвращаюсь на первую страницу и вижу, что внесенного мною изменения в поле электронной почты нет - оно показывает старую электронную почту.
if(typeof policyReference.user.email !== 'undefined') {
$scope.allData.user.email = policyReference.user.email;
// for vopins when agent buys:
// this is for setting email on page refresh. But it makes set it also when going step back. So commented.
// Need to find how to make it set on page load and not set on going back.
$scope.allData.policy_holder['checkout[policy_holder][email]'] = policyReference.user.email;
console.log('this is not called on route change');
handlePaymentProfiles(policyReference.user.email);
if (partialAccountSetup) {
$scope.allData.account_setup['checkout[account_setup][signup][email][first]'] = policyReference.user.email;
$scope.allData.account_setup['checkout[account_setup][signup][email][second]'] = policyReference.user.email;
}
}
Я обнаружил, какая строка вызывает ошибку, но я не понимаю, почему она вызывает ошибку. Строка такая:
$scope.allData.policy_holder['checkout[policy_holder][email]'] = policyReference.user.email;
Я не могу удалить эту строку, потому что она мне нужна, чтобы электронная почта была установлена при любой загрузке приложения.
Я пытался добавить logi c что-то вроде - если это загрузка страницы, то запустите эту строку. В противном случае нет. Но похоже, что эта строка выполняется только при загрузке страницы. Но как-то вызывает ошибку при изменении маршрута.
Мне нужны идеи, где искать. Как определить, какой код меняет поле ввода текста? Я пытался отладить с помощью отладчика chrome, но я не вижу, чтобы строка изменялась в нашем коде, но в коде angularjs такое ощущение, что его очень сложно отладить.
Обновление:
Я создал небольшой скрипт, который отображает изменение сброса при просмотре.
'use strict';
angular.module('myApp.view1', ['ngRoute'])
.config(['$routeProvider', function($routeProvider) {
$routeProvider.when('/view1', {
templateUrl: 'view1/view1.html',
controller: 'View1Ctrl'
});
}])
.controller('View1Ctrl', ['$scope', function($scope) {
$scope.email = 'a';
}]);
И я попытался установить точку останова на $ scope.email = ' а ';
и при загрузке и каждый раз, когда я go к / view1 маршруту, он останавливается на точке останова, что имеет смысл и является отлаживаемым.
Но в моем реальном приложении - он не останавливается на изменение маршрута на линии, которое вызывает проблему:
$scope.allData.policy_holder['checkout[policy_holder][email]'] = policyReference.user.email;
Почему это может быть?
Я также добавил к своему реальному проекту код
this.$onInit = function() {
console.log("View controller initialization");
//Restore data here
//...
};
this.$onDestroy = function() {
console.log("View controller teardown");
//Save data here
//...
};
Это только один контроллер для обоих маршрутов. И я не получаю сообщение журнала демонтажа. Я получаю только инициализацию «Просмотр инициализации контроллера», и это только при загрузке страницы, тогда я могу менять маршруты много раз и больше сообщений. Так что похоже, что контроллер не разрушен.