我正在大量修改所见即所得的 js 插件,并将我自己的自定义元素插入其中。为了插入自定义元素,我使用了指令,以便在我需要进行更改时可以轻松维护它们。到目前为止,这是我的代码示例:
所见即所得编辑器的初始加载:
<div ng-controller="wyswiygCtrl">
<textarea wysiwyg-editor ng-model="content"></textarea>
</div>
这是我插入到所见即所得内容中的自定义元素(指令)的示例:
<wysiwyg-element class="custom_element" name="awesome" type="checkbox" checked="true"></wysiwyg-element>
我在指令的初始化中使用以下代码来编译其中的任何自定义元素(指令):
var e = angular.element(wysiwygEditor.get(0).innerHTML);
$compile(e.contents())(scope);
wysiwygEditor.html(e);
它会按照我的需要编译指令,但棘手的部分来了。我需要能够从 OUTSIDE 角度调用“所见即所得Ctrl”中的函数。我可以在编译之前执行此操作,但由于某种原因,在使用 angular 的 compile 函数后,我无法访问元素的范围。
这是在 a 之前工作的代码$compile
:
angular.element($('.custom_element')).scope().wysiwygModal();
angular.element($('.custom_element')).scope().$apply();
wysiwygModal
在 $compile之后尝试调用函数后出现以下错误:
Uncaught TypeError: Object #<Object> has no method 'wysiwygModal'
我究竟做错了什么?