当前位置: 首页 > 面试题库 >

将Ckeditor值绑定到angularjs和rails中的模型文本

呼延修然
2023-03-14
问题内容

我想将ckeditor文本绑定到ng-model文本

我的看法

<fieldset>
<legend>Post to: </legend>
<div class="control-group">
  <label class="control-label">Text input</label>
  <div class="controls">
    <div class="textarea-wrapper">
      <textarea id="ck_editor" name="text" ng-model="text" class="fullwidth"></textarea>
    </div>
    <p class="help-block">Supporting help text</p>
  </div>
</div>

<div class="form-actions">
  <button type="submit" class="btn btn-primary">Post</button>
  <button class="btn">Cancel</button>
  <button class="btn" onclick="alert(ckglobal.getDate())">Cancel123</button>
</div>

控制者

  function PostFormCtrl($scope, $element, $attrs, $transclude, $http, $rootScope) {
  $scope.form = $element.find("form");
  $scope.text = "";

  $scope.submit = function() {
      $http.post($scope.url, $scope.form.toJSON()).
      success(function(data, status, headers, config) {
              $rootScope.$broadcast("newpost");
              $scope.form[0].reset();
          });
  };

  $scope.alert1 = function(msg) {
      var sval = $element.find("ckglobal");
      //$('.jquery_ckeditor').ckeditor(ckeditor);                                                                                                                      
      alert(sval);
  };
}
PostFormCtrl.$inject = ["$scope", "$element", "$attrs", "$transclude", "$http", "$rootScope"];

我想在表单提交时在$ scope.text中设置ckeditor值

提前


问题答案:

CKEditor在键入时不会更新文本区域,因此您需要注意这一点。

这是一条使ng-model绑定与CK配合使​​用的指令:

angular.module('ck', []).directive('ckEditor', function() {
  return {
    require: '?ngModel',
    link: function(scope, elm, attr, ngModel) {
      var ck = CKEDITOR.replace(elm[0]);

      if (!ngModel) return;

      ck.on('pasteState', function() {
        scope.$apply(function() {
          ngModel.$setViewValue(ck.getData());
        });
      });

      ngModel.$render = function(value) {
        ck.setData(ngModel.$viewValue);
      };
    }
  };
});

在html中,只需使用:

<textarea ck-editor ng-model="value"></textarea>

先前的代码将在每次更改时更新ng-model。

如果只想在保存时更新绑定,请覆盖“保存”插件,以执行除“保存”事件以外的任何操作。

// modified ckeditor/plugins/save/plugin.js
CKEDITOR.plugins.registered['save'] = {
  init: function(editor) {
    var command = editor.addCommand('save', {
      modes: {wysiwyg: 1, source: 1},
      readOnly: 1,
      exec: function(editor) {
        editor.fire('save');
      }
    });

    editor.ui.addButton('Save', {
      label : editor.lang.save,
      command : 'save'
    });
  }
};

然后,在指令中使用此事件:

angular.module('ck', []).directive('ckEditor', function() {
  return {
    require: '?ngModel',
    link: function(scope, elm, attr, ngModel) {
      var ck = CKEDITOR.replace(elm[0]);

      if (!ngModel) return;

      ck.on('save', function() {
        scope.$apply(function() {
          ngModel.$setViewValue(ck.getData());
        });
      });
    }
  };
});


 类似资料:
  • 问题内容: 我在将单选按钮绑定到其属性具有布尔值的对象时遇到问题。我正在尝试显示从$ resource获取的考试题。 HTML: JS: 对于此示例对象,“ isUserAnswer:true”属性不会导致选中单选按钮。如果我将布尔值封装在引号中,则可以使用。 JS: 不幸的是,我的REST服务将该属性视为布尔值,并且很难更改JSON序列化以将这些值封装在引号中。还有另一种方法可以设置模型绑定而不

  • 我在一个razorpage上有一个单选按钮,像这样 表单的模型如下所示 和SQL的模型如下所示 而SQL中的CostCenter的数据类型是varchar(80) 当我保存表单时,CostCenter没有绑定到SQL中的任何值,它将保持为NULL,但表单的其余值将正确保存 那是什么原因造成的呢? 如果选择了“proj”,我想保存值“proj”,如果选择了“dep”,我想保存值“dep” 谢谢 托玛

  • 我有一个如上所述的下拉列表,并希望将所选值绑定到模型的字段(类型为) 但是,无论我选择哪个项目,字段始终为空!它甚至不是可空类型

  • 在rails应用程序中使用AngularJS时,我遇到了一个问题:编辑记录时,文本字段的值设置为空。有没有办法告诉AngularJS使用rails给表单元素的值作为初始值? 我准备了一个JSFIDLE来演示我遇到的问题: http://jsfiddle.net/YUza7/15/

  • 问题内容: 我试图弄清楚如何将AngularJS范围变量绑定到CSS语法中。我认为问题出在花括号中。这是我基本上想做的事情: 关于如何实现这一目标的任何想法?谢谢! 问题答案: 如此处所述, angular不会在样式标签内的内容上运行。在那篇文章中有一个解决方法,但是作为一种更灵活的方法,我只是创建一个指令来获取内容,解析它们并替换: 更新的答案 用法: http://jsfiddle.net/V

  • 问题内容: 升级到1.2后,我的服务返回的promise行为有所不同…简单服务myDates: 在早期版本中,我可以在控制器中执行以下操作: 从getDates返回的promise可以直接绑定到Select元素。现在这不起作用,我被迫在控制器中对promise进行回调,否则数据将无法绑定: 文档仍然说: $ qpromise由模板引擎以角度识别,这意味着在模板中,您可以将附加到作用域的promis