0

私は KO.JS を使用して、html テンプレートを作成しています。

HTMLバインディングでプレビューコマンドを呼び出して、TinyMCEプレビューを表示したいと考えています。

一般に、外部ボタンのクリック時に tinymce のプレビューをレンダリングする方法は次のとおりです。

var preview = function (divName) {
var ID = divName 
    var myEditor = tinyMCE.editors["divName"];
    myEditor.execCommand("mcePreview");
}

注: TinyMCE RTE には複数の DIV があるため、divName をパラメーターとして渡します。

私の問題領域:

上記の関数を使用して、DIV でプレビューをレンダリングしたいと考えています。テンプレート スクリプトで同じコマンドを呼び出そうとしています。

以下は私のテンプレートコードです:

<script type="text/html" id="tmplPreviewModal">

// Lots of other bindings go here //

// Below code should bind Tiny MCE RTE Preview to our DIV // 

<div data-bind="html : {'tinymce.get('id': 'myTxtArea').execCommand('mcePreview'); '} "></div>

 </script>

このコードは機能しません。また、以下のスクリーンショットに示すようにエラーがスローされます。

ここに画像の説明を入力

テンプレート バインディング内に JS コードを記述することはできませんか?

preview以下に示すように、JS 関数を呼び出してみました。

ここに画像の説明を入力

提案してください

4

2 に答える 2

0

"html : {'tinymce.get('id': 'myTxtArea').execCommand('mcePreview'); '} "は構文ナンセンスです。右側は文字列値である必要がありますが、ハッシュのようにカーリーがありますが、キーの代わりに、単一引用符で囲まれた関数呼び出しをラップする文字列があります。

私の最も簡単な推測は、カーリー、最も外側の一重引用符、およびセミコロンが属していないことです (更新: コロンもコンマにする必要があります)。

"html : tinymce.get('id', 'myTxtArea').execCommand('mcePreview')"

その結果がexecCommandHTML 文字列である場合、それは正しいです。しかし、TinyMCE Preview 自体が DOM を操作したいのではないかと思います。つまり、そのためのカスタム バインディング ハンドラーが必要です。

于 2016-09-12T15:57:24.850 に答える