Я использую AngularJS приложение и привязать свойство к полю $rootScope.person
:Отслеживание изменений во входном [Type = текст]
<input type='text' ng-model='person.name'/>
Однако отображаемое значение, как представляется, отличается от гусеничного одного, как это :
$rootScope.$watch('person.name', function (nv) {
if (nv) {
console.log('$rootScope.person changed: ');
console.log(nv);
}
});
Как можно отслеживать объект или функцию, которая изменяет значение текстового поля? Я пытался сделать
<input type='text' ng-model='person.name' oninput="myTrackFunction()"/>
, а затем поставить точку останова в этой функции, чтобы следить за StackTrace ...
Но это один пойман только если пользователь изменяет значение вручную ... есть способ уловить все источники изменения текста в этом вводе?
Some code как пример:
var app = angular.module('myApp', []);
app.run(function($rootScope){
$rootScope.person = {name:'Brain', age:20};
$rootScope.change = function(){
$rootScope.person.name = Math.random().toString(36)
.replace(/[^a-z]+/g, '').substr(0, 5);
}
});
<script
src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js">
</script>
<div ng-app='myApp'>
<input type=text ng-model='person.name'>
person.name is {{person.name}}
<input type=button ng-click="change()" value="change"/>
Как я не могу воспроизвести «ошибка» в этом примере, я хотел бы иметь какой-либо способ определить, что функция который меняет значение (когда я нажимаю кнопку в любом случае) равен change()
, я имею в виду идентификацию источника изменения значения каждый раз, когда значение изменяется ...
Является единственной целью 'input' для отображения значения' person.name' или вы хотите изменить 'person.name' в этом' input'? – Arg0n
должна быть ng-model, что такое ng-bind на входе? o_O –
@ Arg0n Да, пользователь может изменить значение ввода ... но также вход должен быть предварительно загружен, скажем, с защелкнутым/сеансовым значением в первый раз, например, ... – Serge