0

仍然试图围绕如何以角度正确地做事。所以我有一个这样的指令

<div my-directive>
   <input type="button" value="Click" />
   <div id="someElementToRemove"></div>
</div> 

我想为输入按钮分配一个 onlick 侦听器。这个输入按钮操作 DOM,删除指令模板中的一些元素。所以我的问题是我应该在哪里指定这种行为。我知道控制器中不应该有任何 DOM 操作逻辑,所以我会为这个功能创建一个指令吗?

例如

……

我的指令

app.directives.directive('removeElement', function() {
 //logic to remove element
}

我只是想知道这样一个微不足道的功能是否需要一个指令。或者我应该通过 document.getElementById('button').addEventListener.... 在指令中分配一个 onclick 处理程序。

理想情况下,我只想为按钮分配一个 ng-click 元素,并像这样在控制器中创建逻辑。这似乎是最简单的方法。

...
<input type="button" value="Click" ng-click="removeSomeElement()"/>
...

controller.js
...
$scope.removeSomeElement() = function() {
    ...
}
4

1 回答 1

0

在这种情况下,您可能应该问自己几个问题。

  • 我是否希望这部分功能可重用?如果是这样,也许将其移至指令是有意义的,尤其是在它进行 DOM 操作时。
  • DOM 操作是否相当受限于某个 DOM 结构?如果是这样,那么可重用指令在这里将无济于事,也许您应该研究一种替代操作 dom 的方法。
  • 我真的需要操纵 DOM 吗?如果这是一件微不足道的事情,以至于通过 ng-click 将其放入控制器中感觉正确,那么您可能是对的。除非您可能不必实际进行任何 DOM 操作。您能否改为操作控制器中的数据,并让为 DOM 操作构建的其他一些角度指令处理数据所说的任何内容。

如果您只是像您所说的那样删除一个元素,那么这是 ng-if 的理想场所。

于 2013-08-20T22:04:42.513 回答