编程语言
首页 > 编程语言> > javascript – 在这种情况下,处理AngularJS事件的最佳方法是什么?

javascript – 在这种情况下,处理AngularJS事件的最佳方法是什么?

作者:互联网

我在AngularJS中绝对是新的,我对如何处理Angular中的事件有以下疑问.

所以我知道如果在某个视图中我有这样的东西:

<input type="text" ng-model="handle" />

这意味着在dom中的这个输入元素和Angular $scope中的handle变量之间存在双向绑定,例如:

$scope.handle = '';

因此,发生在此输入对象中的任何更改都意味着更改$scope中的handle属性,反之亦然.

因此,在Angular applcation中,我可以明确地声明一个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);

});

因此它应该具有相同的含义,即手动添加经典的vanilla JavaScript EventListener(通过addEventListener()在我想要在经典的旧vanilla JavaScript应用程序(不使用Angular)中观察的对象上.

当某些内容在输入值上发生变化时,将执行与该祭司相关联的功能.

好吧,对我来说很清楚.

现在我说我也可以这样做.

进入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包含了所有这些功能,并且必要时将运行摘要循环或其他巫毒魔法.

标签:javascript,angularjs,angularjs-directive,angularjs-scope,javascript-framework
来源: https://codeday.me/bug/20190829/1762054.html