mfe*_*old 6 angularjs angularjs-directive
我需要构建一个对话框,用于项目列表中的任何项目.无论项目如何,对话框几乎都是相同的,除了显然依赖于项目的字段的值.
我正在构建的指令是从文件中读取模板,使用$ compile编译它,然后将其绑定(链接)到项目的范围.绑定的结果是DOM树.要使对话框可见,我需要将此树附加到现有DOM中的某个元素.我的对话框的性质使得将它直接附加到body标签是有意义的.该对话框将与列表中的不同项目结合使用多次
所以这是我的问题:这个过程(编译,绑定,追加)有多少可以提前完成?我当然可以运行一次编译.我还可以将编译结果绑定到$ rootscope并将其附加(隐藏)到body标签.这样我以后可以打开可见性并显示对话框.
但是如果它已经绑定并附加到DOM,那么它是否可以将其重新绑定到其他范围,如果是这样的话 - 这样做的正确方法是什么?另一个问题是它甚至值得吗?可能只是在每次需要时重新插入它?
如果您一次只显示一个这样的对话框,并且您将经常使用它,则不必将其重新绑定到另一个范围,只需更改范围上的数据即可.像这样的东西:
现在,您有一个可以在系统中的任何位置使用的对话框,您只需重新使用相同的指令,而不必混淆DOM或编译.
这确实是一个很好的问题,我很高兴看到越来越多的人开始将对话作为服务.
关于您的具体问题,以下是我的一些想法:
$compile调用返回的函数),然后根据需要调用此函数(传入范围变量).<body>仅仅触摸上面ng-app定义的DOM元素.只是不要触摸AngularJS无法控制的DOM部分.实际上,在设计一个优秀的通用对话服务时需要考虑很多事情,我希望这些建议以及其他人提供的出色输入能够帮助您入门.但这一切都有点理论上所以如果你正在研究这里讨论的实现,你可以看看这个实现.(来自http://angular-ui.github.com/bootstrap/的 $ dialog服务- 它是完全可定制的,因此可以与除Bootstrap之外的CSS一起使用.文档在这里).
可以在这个插件中看到它:http://plnkr.co/edit/PG0iHG?p = preview
| 归档时间: |
|
| 查看次数: |
5862 次 |
| 最近记录: |