用ng-click传递DOM对象的引用

在ng-click上我有多个具有相同callback的元素:

<button ng-click="doSomething()"></button> <button ng-click="doSomething()"></button> <button ng-click="doSomething()"></button> <button ng-click="doSomething()"></button> 
 // In controller: $scope.doSomething = function() { // How do I get a reference to the button that triggered the function? }; 

我怎样才能得到引用的东西的对象呢? (我需要从中删除一个attr)

angular度的方式显示在angular度docs 🙂

https://docs.angularjs.org/api/ng/directive/ngReadonly

这里是他们使用的例子:

 <body> Check me to make text readonly: <input type="checkbox" ng-model="checked"><br/> <input type="text" ng-readonly="checked" value="I'm Angular"/> </body> 

基本上angular度的方法是创build一个模型对象,将保存input是否应该只读,然后相应地设置该模型对象。 angular度之美就是大多数时候你不需要做任何dom操作。 你只需要angular度渲染你的模型设置的angular度(让angular度做你的dom操作,并保持你的代码清洁)。

所以基本上你的情况下,你会想要做下面的事情或检查这个工作的例子。

 <button ng-click="isInput1ReadOnly = !isInput1ReadOnly">Click Me</button> <input type="text" ng-readonly="isInput1ReadOnly" value="Angular Rules!"/> 

从技术上讲,当你做到以下几点时:

 <button ng-click="doSomething($event)"></button> 
 // In controller: $scope.doSomething = function($event) { //reference to the button that triggered the function: $event.target }; 

这可能是你不想做的事情,因为AngularJS的理念是专注于模型操作,并让AngularJS进行渲染(基于声明性UI的提示)。 在控制器中操作DOM元素和属性是AngularJS世界的一大禁忌。

您可能会检查此答案的更多信息: https : //stackoverflow.com/a/12431211/1418796