69

我在 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)

4

2 回答 2

223

当您执行以下操作时,从技术上讲:

<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

于 2013-06-21T16:54:22.060 回答
22

角度方式显示在角度文档中:)

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 的美妙之处在于大多数时候你不需要做任何 dom 操作。您只需按照设置模型的方式对视图进行角度渲染(让角度为您进行 dom 操作并保持代码干净)。

所以基本上在你的情况下,你会想要做类似下面的事情或查看这个工作示例。

<button ng-click="isInput1ReadOnly = !isInput1ReadOnly">Click Me</button>
<input type="text" ng-readonly="isInput1ReadOnly" value="Angular Rules!"/>
于 2013-06-23T04:09:04.213 回答