Angularjs指令与范围指定行为

Angularjs指令与范围指定行为,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我仍在努力思考如何正确地用英语做事。所以我有一个这样的指令 <div my-directive> <input type="button" value="Click" /> <div id="someElementToRemove"></div> </div> 我只是想知道这样一个微不足道的功能是否值得一个指令。或者我应该通过document.getElementById('button').addEventListen

我仍在努力思考如何正确地用英语做事。所以我有一个这样的指令

<div my-directive>
   <input type="button" value="Click" />
   <div id="someElementToRemove"></div>
</div> 
我只是想知道这样一个微不足道的功能是否值得一个指令。或者我应该通过document.getElementById('button').addEventListener在指令中分配onclick处理程序

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

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

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

在这种情况下,您可能需要问自己几个问题

  • 我希望这一点的功能是可重用的吗?如果是这样的话,也许将它移到一个指令上是有意义的,尤其是当它进行DOM操作时
  • DOM操作是否仅限于特定的DOM结构?如果是这样的话,那么一个可重用的指令在这里就没有帮助了,也许您应该研究一种操作dom的替代方法
  • 我真的需要操纵DOM吗?如果这是一件很琐碎的事情,只需点击一下就可以将其放入控制器,那么您可能是对的。除非您可能不需要实际执行任何DOM操作。您是否可以改为操纵控制器中的数据,并让为DOM操纵而构建的其他一些角度指令处理数据所说的任何内容

如果你只是像你说的那样移除一个元素,那么这是ng If的完美场所

谢谢Derek,在我的例子中,功能是一次性的,不意味着可重用。至于操纵控制器中的数据..这意味着在指令中为该属性添加$watch,是吗?再次感谢,没问题。我不确定你到底是怎么安排的,但你不需要一个$watch电话。您应该能够使某个范围布尔值等于true。单击“输入”按钮时,将该布尔值设置为false。然后在您希望删除的元素上,使用带有布尔值的ng if指令作为表达式,如:哦,好的,我没有考虑使用ng if。我知道这是最近的一个特色。我想知道在ng if之前应该怎么做。我有足够的信息去做我想做的事..似乎有太多的选择。ThanksYeah,ng if是在1.0.7中添加的,这是一个稳定的版本。如果您想了解他们是如何实现ng的,请看一看,其中有一些额外的代码专门用于ng动画支持
...
<input type="button" value="Click" ng-click="removeSomeElement()"/>
...

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