我使用了以下HTML:
<textarea style="height: 350px; width: 100%"
data-ck-editor="text" id="editor-1"
data-ng-disabled="modal.action=='delete'"
data-ng-model="modal.data.text"></textarea>
这个指令:
app.directive('ckEditor', [function () {
return {
require: '?ngModel',
link: function ($scope, elm, attr, ngModel) {
ck = CKEDITOR.replace(elm[0]);
...
...
现在已经设置了我想从指令之外的javascript向ckEditor发送命令。像这样:
editor1.setData('xxx');
如何知道创建它的指令是基于具有id =“editor-1”的textarea的ckEditor对象(例如editor1)?
答案 0 :(得分:0)
您可以将所有编辑器实例存储在服务中,该服务可以从其他任何位置访问。代码可能如下所示:
app.value("ckEditors", {});
app.directive('ckEditor', ["ckEditors", function (ckEditors) {
return {
require: '?ngModel',
link: function ($scope, elm, attr, ngModel) {
ckEditors[attr.id] = ck = CKEDITOR.replace(elm[0]);
...
...
app.controller('somectrl', function (ckEditors) {
ckEditors["editor-1"].setData('xxx')
...
事件虽然我不知道你从外部指令直接ckEditor访问背后的原因,但我确信有比这更优雅的解决方案。