跟踪输入中的更改[type = text]

时间:2015-11-26 17:47:34

标签: javascript html angularjs debugging

我使用AngularJS应用程序并将属性绑定到字段$rootScope.person

<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 个答案:

答案 0 :(得分:0)

这与this one等问题有些重复。

map polyfill似乎很方便。

在这个小提琴中看到它适用于你的情况:http://jsfiddle.net/masa671/c6vge629/。打开调试器。在Chrome中测试过。