我是angular.js初学者。任何人都可以详细解释我在下面的代码中做了什么?什么是$ browser和$ browser.defer(listenerOnKey)应该做什么(剩下的代码很清楚)?
element.bind('keydown', function (event) {
var key = event.keyCode
// If the keys include the CTRL, SHIFT, ALT, C, V or META keys, or the arrow keys, do nothing.
if (key == 91 || (15 < key && key < 19) || (37 <= key && key <= 40) || key == 67 || key == 86 || key == 9 || key == 8 || key == 46 || key == 190 || key ==110 )
return
$browser.defer(listenerOnKey);
})
var listenerOnKey = function () {
var value = element.val().replace(/,/g, '').replace('%', '');
element.val($filter('number')(value));
}
答案 0 :(得分:2)
$浏览器服务不是'公共'Angular API,所以我建议避免使用任何代码。特别是如果你是初学者
答案 1 :(得分:2)
正如弗拉基米尔所说,它不是公共API,所以你不应该使用它。它是AngularJS内部使用的东西。
此外,
$browser.defer
通过setTimeout(fn, delay)
异步执行fn。
因此,不要使用它,只需使用$timeout
自行完成。
$timeout(listenerOnKey, 0);
至于代码本身的作用,如果它们点击了某些键,它就不会做任何事情,但是它会调用下面的函数listenerOnKey
来执行任何其他键,这会删除任何comma's
或%
标志。
之后,它会运行angularJS过滤器测试以查看该值是否实际上是number
。
element.val($filter('number')(value));
如果没有,则返回一个空字符串并清除输入。