我有多个元素在ng-click上具有相同的回调:
<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?
};
如何获得调用doSomething的对象的引用? (我需要删除它的attr)
答案 0 :(得分:211)
从技术上讲,当您执行以下操作时:
<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的提示)。 在AngularJS世界中,从控制器处理DOM元素和属性是一个很大的禁忌。
您可以查看此答案以获取更多信息:https://stackoverflow.com/a/12431211/1418796
答案 1 :(得分:21)
角度方式显示在角度文档:)
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>
基本上,角度方式是创建一个模型对象,该对象将保持输入是否应该只读,然后相应地设置该模型对象。棱角分明的美是大多数时候你不需要做任何dom操作。你只需要角度渲染你的模型设置的方式(让角度为你做dom操作并保持你的代码干净)。
所以基本上在你的情况下你会想要做下面的事情或者查看this工作示例。
<button ng-click="isInput1ReadOnly = !isInput1ReadOnly">Click Me</button>
<input type="text" ng-readonly="isInput1ReadOnly" value="Angular Rules!"/>