Angularjs指令与范围指定的行为

时间:2013-08-20 21:55:55

标签: angularjs angularjs-directive

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

<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')在指令中分配一个onclick处理程序.addEventListener ....

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

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

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

1 个答案:

答案 0 :(得分:0)

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

  • 我是否希望这些功能可以重复使用?如果是这样,将它移到指令可能是有意义的,特别是如果它正在进行DOM操作。
  • DOM操作是否相当于某个DOM结构?如果是这样,那么可重复使用的指令在这里将无济于事,也许你应该研究一种操纵dom的替代方案。
  • 我真的需要操纵DOM吗?如果它是如此微不足道的事情,将它放在控制器中的ng-click是合适的,那么你可能是对的。除非您可能不必实际执行任何DOM操作。您是否可以操纵控制器中的数据,让一些为DOM操作构建的其他角度指令处理数据所说的任何内容。

如果您只是删除像您这样的元素,那么这是ng-if的理想之地。