我是AngularJS的新手,我对如何在Angular中处理事件存在以下疑问。
所以我知道在视图中我是否有这样的东西:
<input type="text" ng-model="handle" />
这意味着在dom中的此输入元素和Angular $ scope中的handle变量之间存在2向绑定,例如:
$scope.handle = '';
因此,对该输入对象进行的任何更改都意味着$ scope中handle属性的更改,反之亦然。
因此,在Angular应用中,我可以显式声明一个whatcher
// I explicitly declare a whatcher on the handle property: when the value of this propertu change the function() is performed:
$scope.$watch('handle', function(newValue, oldValue) {
console.info('Changed!');
console.log('Old:' + oldValue);
console.log('New:' + newValue);
});
因此,它的含义与手动添加经典香草JavaScript EventListener(通过addEventListener()在要在经典旧香草JavaScript应用程序(不使用Angular)中要观察的对象上)具有相同的含义。
当输入值发生变化时,将执行与Whatcher相关的功能。
好吧,对我来说很清楚。
现在我说我也可以做这样的事情。
在HTML代码中,我可以输入以下内容:
<input type="button" value="Click Me" ng-click="alertClick()" />
在Angular控制器中,我将看到类似以下内容的内容:
$scope.alertClick = function() {
alert("Clicked !!!");
}
因此,当按钮上有click事件时,似乎ng-Click指令执行的功能是$ scope字段。
但是我可以做与第一个示例相同的操作吗?如果通过ng-model =“ handle”指令将其与模型对象相关联,我可以在按钮上声明一个whatcher吗?
什么时候最好使用第一种方法,什么时候最好使用第二种方法来处理AngularJS中的事件?
ngModel用于将输入形式的UI绑定到控制器
ngClick只是一个常规的javascript表达式,可以访问将在click事件中执行的控制器范围。
在这里,您必须使用ng-click。
使用angular的一个好习惯是避免使用诸如addEventListener()或Jquery之类的其他函数...因为AngularJS包装了所有这些功能,并且在必要时将运行摘要循环或其他伏都教徒魔法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句