Angularjs:查找指令的所有实例
我正在尝试创建一个指令,允许用户使用箭头键逐段导航页面.但是,我也希望能够将这些部分分散在dom上,并且在添加和删除内容时不会中断这些部分.我可以想到几种方法来做到这一点,但没有一个是令人满意的:
>使用控制器创建一个指令,允许其他指令注册自己(并在$destroy上注销).但是如果我稍后再添加一些东西,这将是无序的.此外,我已经尝试这样写,似乎更多的代码是必要的. 那么,我有什么办法可以获得某种类型的所有指令的范围,而不是诉诸奇怪的黑客,还是将逻辑推广到整个地方?
这是一个很好的问题. 1
首先,通过类型查找所有指令或节点与Angular方式相反.视图是AngularJS的官方记录,所以指令应该说他们做什么,做他们说的话.在某处扫描某些DOM节点并进行相应的处理是有问题的,原因有几个,其中最重要的是分离问题和可测试性. 我很高兴看到您正在查看其他选项,但我同意您提供的其他选项是次优的,因为您提到的原因.但我还有一个.这是我用于不同应用程序的,但这需要知道分散的DOM节点. 首先,我们创建一个服务来管理这个组件的状态.这很简单.我们称之为SectionsService.接下来,我们创建一个注册部分的指令.我们来简单的说一下这个部分. section指令在链接阶段注册了DOM节点的ID(可能以编程方式创建以确保唯一性)与SectionsService进行注册.由于DOM被按顺序处理(主要),所以添加到SectionsService的节点也将按顺序排列.所以DOM看起来像这样(不相关的东西省略): <div section>...</div> <!-- other stuff --> <div section>...</div> <!-- other stuff --> <!-- etc. --> (尽管这里的范围不大,编程的方式并不是很困难,因为顺序不重要,但是它将基于我不知道的应用程序的细节.) 接下来,您创建触发器,如箭头键处理程序.在这些事件上,您只需要告诉SectionService去列表中的上一个/下一个节点. AngularJS提供了一个名为 就是这样!一个非常简单的指令,一个相当简单的服务,以及你需要的任何触发器.总而言之,我猜测不到100行代码,包括测试.所有组件都是分离的,容易测试,但仍然非常简单.这个观点仍然是真相.角色保留. 还有很高兴. 我希望这能让你走向正确的方向,但当然可以随便问一个后续的问题.如果你愿意,我们也可以谈论代码细节;正如我所说,他们不会很复杂. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |