如何从元素初始化 TinyMCE

How to initialise TinyMCE from element

文档说明您是这样初始化 tinymce 的:

tinymce.init({
    selector: '#mytextarea'
  });

但是,我希望在我有权访问该元素的 knockout 中的绑定扩展中执行此操作。

因此,我希望能够执行以下操作:

ko.bindingHandlers.tinymce = {
    init: function (element, valueAccessor, allBindings) {
        $(element).tinymce();
        return ko.bindingHandlers.textInput.init(element, valueAccessor, allBindings);
    }
}

这就是我在网上找到的现有绑定扩展的工作方式,但是对我来说,我得到了 tinymce is not a function 并想知道 API 是否已更改,迫使您使用选择器。

这是真的吗?

API没变。但是,您使用了错误的依赖项。为了将 jQuery 与 tinyMCE 一起使用,您需要在此 exact 命令中使用 以下依赖项

  1. http://cdn.tinymce.com/4/tinymce.jquery.min.js
  2. https://code.jquery.com/jquery-1.11.3.min.js

看看this working example.

var settings = {
    height: 500,
    plugins: [
        'advlist autolink lists link image charmap print preview anchor',
        'searchreplace visualblocks code fullscreen',
        'insertdatetime media table contextmenu paste code'
    ],
    toolbar: 'insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image',
    content_css: [
        '//fast.fonts.net/cssapi/e6dc9b99-64fe-4292-ad98-6974f93cd2a2.css',
        '//www.tinymce.com/css/codepen.min.css'
    ]
};

ko.bindingHandlers.tinymce = {
    init: function (element, valueAccessor, allBindings) {
        $(element).tinymce(settings);
        return ko.bindingHandlers.textInput.init(element, valueAccessor, allBindings);
    }
}

ko.applyBindings();