0

一些(高级?)棱角让我头疼。

目标是扩展所见即所得的 HTML 编辑器,以允许用户将某些角度指令插入到任意 HTML 内容中。我选择了medium-editor和它的angular-medium-editor包装器(但如果有更好的解决方案,我不同意)。

这个 Plunk显示了编辑器指令是如何实例化和激活的(使用editable属性)。工具栏被定制为包含一个按钮,该按钮在所选文本周围添加自定义指令:<my-custom-directive class="bg-info"> ... </my-custom-directive>. (为了演示,自定义指令将其内容包装(嵌入)在一个按钮中,该按钮在单击时会触发警报)。

我在(重新)编译编辑器的内容时​​遇到问题,以便编辑器内的指令编译。对于使用$compile(element.contents())(scope)嵌入的指令,使用会引发 ngTransclusion:orphan 错误。link(我知道这是由于在调用编辑器函数时 Angular 已经进行了嵌入。)

我无法将所有潜在的自定义指令重构为不使用嵌入。

我可以使用什么模式来成功编译任意编辑器内容(可能包括许多不同的指令),理想情况下,无论何时该内容发生变化,或者至少在编辑完成时?这是合理使用 $compile 的“边缘案例”之一吗?如果是这样,我该如何使用它?

4

1 回答 1

0

这个问题和答案让我意识到这样做的方法是$compile 在插入元素时插入,而不是重新编译整个部分。

方便地,rangy 的 classApplier 模块允许一个onElementCreate回调,该回调可用于在添加自定义指令时对其进行编译。

这是工作的笨蛋。

于 2016-09-06T11:47:56.593 回答