【发布时间】:2016-06-19 11:04:35
【问题描述】:
如果我有一个看起来像这样的自定义模式指令:
return {
restirct: 'E',
templateUrl: 'modal.html',
scope: {
modalContent: "=",
modalOpen: "="
}
}
和html:
<ng-modal modal-content="content" modal-open"active"></ng-modal>
如何确保模态在 DOM 关闭时不存在于 DOM 中,一旦打开它就会将其自身插入 DOM?我必须将指令插入到 html 中,否则指令将不起作用,但这意味着当我运行应用程序时,即使它没有打开,模式也已经存在于 html 中。
我创建了一个到目前为止here 的 plunker,但它只使用 css 类隐藏/显示模态,而不是完全删除它
编辑:
我创建了另一个版本here,它实际上在 DOM 中添加/删除了指令。它基于this 文章,但它需要在指令和外部控制器之间拆分添加/删除指令的逻辑(外部控制器处理添加元素,指令处理删除)。我希望指令处理所有事情,这可能吗?
【问题讨论】:
-
我曾经使用类似于 BootstrapUI $modal 服务的 API 创建了非常简单的模态服务(注意:不是指令)。检查它(out)[github.com/dfsq/angular-google-tasks/blob/master/app/components/…。它正确地创建和删除模态。
-
为什么不使用
ng-if指令?ngIf指令根据表达式删除或重新创建 DOM 树的一部分。 docs.angularjs.org/api/ng/directive/ngIf -
@georgeawg 这只适用于我将 ng-if 放在模板内的内容上,如果我将 ng-if 放在
<ng-modal>指令上,那么该指令将根本不起作用。我还希望能够控制插入/附加指令的位置,这是 ng-if 无法实现的。 -
您为解决问题做了哪些工作?到目前为止,您遇到了什么困难?
-
@georgeawg 用我目前所拥有的内容编辑了原始问题。
标签: javascript angularjs dom