如果我知道id,如何使用javascript找到对象的引用

时间:2013-10-18 08:01:44

标签: javascript angularjs ckeditor

我使用了以下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)?

1 个答案:

答案 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访问背后的原因,但我确信有比这更优雅的解决方案。