首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AngularJS & Redactor插件

AngularJS & Redactor插件
EN

Stack Overflow用户
提问于 2013-03-18 14:12:32
回答 3查看 4.3K关注 0票数 2

所以我在AngularJS的一个新网站上工作,我喜欢它!

然而,我遇到了一个问题。我正在尝试添加一个叫做'Redactor‘的jQuery插件到我的文本区域中,但是我想当我初始化这个插件的时候,它会替换掉文本区域元素。这是有问题的,因为我已经为文本区域设置了一个'ng-model‘属性,如下所示:

我使用AngularJS UI拾取焦点事件,然后对文本的焦点执行以下代码

代码语言:javascript
复制
    $scope.addRedactor = function() {
        $('.redactor').redactor();
    });

现在我似乎无法获取textarea的值,因为当我尝试访问ng-model 'response‘时,它显示为未定义。

有没有办法在受Redactor影响后将ng-model属性绑定到textarea?否则,有没有其他方法可以让我得到文本区域的值?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-04-28 23:15:10

我今天也在寻找同样的答案,并制定了一个解决方案:

代码语言:javascript
复制
angular.module('Module', []).directive("redactor", function() {
  return {
    require: '?ngModel',
    link: function($scope, elem, attrs, controller) {   

      controller.$render = function() {

        elem.redactor({
          keyupCallback: function() {
            $scope.$apply(controller.$setViewValue(elem.getCode()));
          },
          execCommandCallback: function() {
            $scope.$apply(controller.$setViewValue(elem.getCode()));
          }
        });

        elem.setCode(controller.$viewValue);
      };
    }
  };
});

然后,您可以只使用以下HTML:

代码语言:javascript
复制
<textarea ng-model="yourModel" redactor></textarea>

当用户单击工具栏中的按钮时,模型将在每个keyUp上更新。模型将包含HTML代码。

我刚开始使用AngularJS,所以如果有更好的方法,或者我是否打破了一些我仍然不知道的惯例,请告诉我。

票数 9
EN

Stack Overflow用户

发布于 2013-07-30 12:40:59

对于那些发现被接受的答案不像我这样工作的人。这是工作版本(使用Angular v1.1.5)

代码语言:javascript
复制
angular.module('Module', []).directive("redactor", function() {
        return {
            require: '?ngModel',
            link: function($scope, elem, attrs, controller) {
                controller.$render = function() {
                    elem = $(elem);
                    elem.val(controller.$viewValue);
                    elem.redactor({

                        changeCallback: function() {
                            $scope.$apply(controller.$setViewValue(elem.val()));
                        }

                    });

                };
            }
        };
    });

changeCallback比其他回调加在一起要好得多,在我的例子中,我必须将元素转换为Jquery元素。我还发现setCode和getCode根本不可用。它可能是一个不同的版本。

票数 7
EN

Stack Overflow用户

发布于 2013-12-11 20:19:21

对“RedactorJS”使用这个AngularJS模块:https://github.com/TylerGarlick/angular-redactor

它对我来说工作得很好。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15470721

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档