【问题标题】:Angularjs Bbcode editor [closed]Angularjs Bbcode 编辑器 [关闭]
【发布时间】:2014-06-14 19:43:09
【问题描述】:

我需要一个可以集成到 Angular 应用程序中的简单 BBcode 编辑器。一些非常基本的东西,比如this one。但是我在任何地方都找不到这样的东西。
我发现的最好的东西是 jQuery 的 markItUp plugin,但是当我尝试将它集成到我的应用程序中时,它导致了一些错误:当我按下按钮时绑定模型没有更新,并且它不适用于元素,由角度本身重新创建。

那么,有什么我可以用的吗?
如果没有,我如何将第一个编辑器更改为指令?除了将 html 标记移动到模板之外,我还需要从什么开始?

【问题讨论】:

  • 我认为这个问题不是题外话,因为它要求技术解决方案(除了预先打包的替代方案),并继续由 OP 自己提供有价值/有价值的解决方案。简单地清理问题而不另外询问库/包/模块选项可能足以使这个问题有效并且能够将tp拉出离题领域。

标签: javascript jquery angularjs angularjs-directive bbcode


【解决方案1】:

我最终将 markItUp 与 angular 集成在一起。花了我一段时间,并从 IRC 频道的人那里得到了很多帮助。以下是我的做法。

MarkItUp 指令。

app.directive("markItUp", ["markitupSettings", function(markitupSettings) {
    return {
      restrict: "A",
      scope: {
        ngModel: "="
      },
      link: function(scope, element, attrs) {
        var settings;
        settings = markitupSettings.create(function(event) {
          scope.$apply(function() {
            scope.ngModel = event.textarea.value;
          });
        });
        angular.element(element).markItUp(settings);
      }
    };
  }
]);

这些设置存储在一个服务中,用于在多个实例和控制器之间共享它们。

app.factory('markitupSettings', [
  function() {
    var factory, markset;
    markset = [
      //here goes your usual markItUp layout
    ];
    factory = {};
    factory.create = function(callback) {
      return {
        afterInsert: callback,
        previewParserPath: '',
        markupSet: markset
      };
    };
    return factory;
  }
]);

然后你只需在 html 布局中设置它:

<textarea name="somevar" ng-model="myText" mark-it-up ></textarea>

它已经完成了。您有一个漂亮且功能强大的编辑器。

【讨论】:

  • 有趣...这可能正是我需要的!您是否考虑过为此创建一个 Angular 模块,以便人们可以将其 CDN 到他们的项目中?类似于 ng-quill 为 QuillJS 所做的事情。
  • 另外,我认为使用这种方法仍然需要 jQuery?您没有遇到过 MarkItUp 的 jQuery 代码干扰或踩到您对视图/DOM 的 Angular 控件的任何问题吗?通常认为在同一个网页中同时包含 jQuery 和 Angular 是对立的。 “这不是 Angular 方式”等等。
猜你喜欢
  • 1970-01-01
  • 2016-07-04
  • 1970-01-01
  • 1970-01-01
  • 2010-09-17
  • 2010-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多