2015-11-26 3 views
1

Я использую 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(), я имею в виду идентификацию источника изменения значения каждый раз, когда значение изменяется ...

+1

Является единственной целью 'input' для отображения значения' person.name' или вы хотите изменить 'person.name' в этом' input'? – Arg0n

+0

должна быть ng-model, что такое ng-bind на входе? o_O –

+0

@ Arg0n Да, пользователь может изменить значение ввода ... но также вход должен быть предварительно загружен, скажем, с защелкнутым/сеансовым значением в первый раз, например, ... – Serge

ответ

0

Это своего рода дубликат вопросов, таких как this one.

object-watch.jspolyfill10 похоже удобный.

Посмотрите, как это применимо к вашему делу в этой скрипке: http://jsfiddle.net/masa671/c6vge629/. Откройте отладчик. Протестировано в Chrome.

Смежные вопросы