将tinyMCE与knockoutjs绑定

时间:2013-12-12 21:11:31

标签: javascript asp.net-mvc-4 knockout.js tinymce-4

尝试使用tinyMCE自定义绑定。 我的模型C#:

    public sealed class CabinetShapeEditModel
{
    public string Description { get; set; }
}

在视图中:

    <script type="text/javascript">
    var jso = @Html.Raw(Json.Encode(Model));
    var viewModel = ko.mapping.fromJS(jso);
</script>

我的HTML:

<div style="min-height: 250px; padding-left: 10px; padding-top: 5px;">
          <textarea data-bind="wysiwyg: Description, wysiwygConfig: {selector:selector, menubar:false, statusbar : false, height: 210, toolbar: 'undo redo | styleselect | bold italic | link unlink | image | media | charmap| code | table | ltr rtl | emoticons | forecolor backcolor | fullscreen | preview', plugins: 'hr,link,image,charmap,preview,code,fullscreen,insertdatetime,media,table,directionality,emoticons,textcolor'  }"></textarea>
</div><script type="text/javascript">
    ko.applyBindings(viewModel);</script>

JavaScript:https://github.com/michaelpapworth/tinymce-knockout-binding

但总是记得错误: 未捕获的TypeError:无法处理绑定“wysiwyg:function(){return Description}” 消息:对象[object Object]没有方法'tinymce'

我做错了什么?

2 个答案:

答案 0 :(得分:2)

错误Message: Object [object Object] has no method 'tinymce'表示您未包含jquery.tinymce.min.js插件。我已经更新docs以澄清这一点。

答案 1 :(得分:0)

尝试

  1. 包括debug version of the wysiwyg binding而不是压缩的,如果您还没有
  2. 在您的开发者工具(Chrome开发工具或Firebug)中
  3. ,转到“脚本”面板并在第57行设置断点

    $(element).text(value).tinymce(defaults);
    
  4. 现在重新加载页面。这应该在错误发生之前触发调试器。

    $(element)应该是您的文字区域,value应该是您的Description。虽然开发工具已在断点处停止,但打开控制台,手动运行这些步骤并查看是否有任何意外返回:

    $(element)
    $(element).text(value)
    $(element).text(value).tinymce(defaults)