我使用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()
,我的意思是每次改变价值时确定价值变化的来源......
答案 0 :(得分:0)
这与this one等问题有些重复。
map
polyfill似乎很方便。
在这个小提琴中看到它适用于你的情况:http://jsfiddle.net/masa671/c6vge629/。打开调试器。在Chrome中测试过。