2

所以我正在使用 AngularJS 开发一个新网站,并且喜欢它!

但是,我遇到了一个问题。我正在尝试向我的 textarea 添加一个名为“Redactor”的 jQuery 插件,但我认为当我初始化插件时,它会替换 textarea 元素。这是有问题的原因,是因为我为文本区域设置了一个“ng-model”属性,如下所示:

我正在使用 AngularJS UI 来获取焦点事件,然后在文本焦点上执行以下代码

    $scope.addRedactor = function() {
        $('.redactor').redactor();
    });

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

有没有办法在它受到 Redactor 影响后将 ng-model 属性绑定到 textarea?否则,我应该以另一种方式获得 textarea 的价值吗?

4

3 回答 3

9

我今天也在寻找相同的答案,并做出了解决它的指令:

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:

<textarea ng-model="yourModel" redactor></textarea>

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

我刚刚开始使用 AngularJS,所以如果有更好的方法可以做到这一点,或者我是否违反了一些我仍然不知道的约定,请告诉我。

于 2013-04-28T15:15:10.287 回答
7

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

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 比其他回调组合好太多了,在我的情况下,我必须将 elem 转换为 Jquery 元素。我还发现 setCode 和 getCode 根本不可用。可能是不同的版本。

于 2013-07-30T04:40:58.903 回答
4

将此 AngularJS 模块用于“RedactorJS”: https ://github.com/TylerGarlick/angular-redactor

它对我来说很好。

于 2013-12-11T12:19:20.733 回答