2013-03-19 88 views
5

我对AngularJS相当陌生,并试图去思考Angular方式。
现在我正在开发一款应用程序,该应用程序具有不同的功能,可以在名为FeatureRegistry的角度服务中注册。从那里他们被拿到并从FeatureSelectionController插入侧边栏。通过点击一个特征,应该调用适当特征的startFeature()函数,之后该特征应该被添加到主视图(但是DOM操作应该在哪里发生?)。在AngularJS中插入指令到HTML中?

所以有我的问题。什么是向DOM添加指令的最佳方式(角度方式),我不一定要用jQuery来做到这一点(并且也想限制$ compile,$ watch等的使用)。

mainView中的指令可以有一个隔离范围,因为这些特征执行彼此独立的操作(它们共享的数据封装在角度服务中)。

Here is an image

什么是插入指令的角方式

我总是读到DOM操作应该只发生在指令中,但在文档和其他问题中,我没有找到办法做到这一点。

+1

+1有关正确提问的方法。 – Stewie 2013-03-19 15:38:09

回答

3

这里有一个快速演示:http://plnkr.co/edit/eZTtRVTPb7k9kgS8woKh?p=preview

我不一定看到这里的指令需要...除非有很多的名单,最大化的功能特征之间通用的功能,并最小化功能。

如果你真的有很多的三个列表之间共同的功能,你可以做这样的事情:

<feature ng-repeat="f in registry.all()" model="f" state="list"> 
<feature ng-repeat="f in registry.maximized()" model="f" state="open"> 
<feature ng-repeat="f in registry.minimized()" model="f" state="minimized"> 

然后在你的指令模板,你可以有那么你的常用功能确定取决于有什么在使用ng-switchng-show的状态。

您是否需要编写实际指令的帮助?