结合敲除与tinymce

时间:2014-03-01 05:32:53

标签: knockout.js tinymce

我正在尝试将knockout 3.0.0tinymce 4.0.18一起使用。

我想创建一些like this:几个可编辑的元素(这里有3个),但这些元素来自淘汰赛。没有tinyMCE这样做不是问题(这里是my attempt)。

但是,当我尝试通过这样的方式实现相同的result with tinyMCE时:

function ViewModel() {
    var self = this;
    self.editableAreas = ko.observableArray([{
        id : 1,
        txt: ko.observable('first text area'),
    },{
        id : 2,
        txt: ko.observable('second text area'),
    },{
        id : 3,
        txt: ko.observable('all observable text area'),
    }]);
}

ko.applyBindings(new ViewModel());

tinymce.init({
    selector: "div.editableArea",
    schema: "html5",
    inline: true,
    toolbar: "bold italic underscore",
    menubar: false
});

谷歌搜索有点大我发现了两个自定义绑定tinyMCE(first绑定和second)。这是最好的方法吗?如何修改我的小提琴按预期工作?

1 个答案:

答案 0 :(得分:3)

使用bindingHandler将DOM元素绑定到viewmodel是"更正"办法。只需包含您链接到的bindingHandler之一。我updated your jsfiddle using the second bindingHandler(随意选择,因为我没有偏好,因为我不知道其中任何一个)。在包含了bindingHandler(以及它似乎依赖的jquery和jquery.tinymce.min.js)后,我将html更新为以下内容,以便使用bindingHandler:

<div data-bind="foreach: editableAreas">
    <div class="editableArea" data-bind="wysiwyg: txt, wysiwygConfig: {    
        schema: 'html5',
        inline: true,
        toolbar: 'bold italic underscore',
        menubar: false
    } "></div>
</div>

在这种情况下,我在视图中有了tinymce配置。如果你想将它作为viewModel中的属性,那么更改它应该很容易(例如使用以下code