0

ユーザーが HTML を送信して保存できる Web アプリがあります。ユーザーは、使用したい html をいくつかの異なるフィールドに入力します。一部はテキスト入力要素で、一部はテキストエリア要素です。ユーザーがマークアップを送信すると、特殊文字が html エンティティに変換されます。

ユーザーが送信した html を編集するために戻ってきたら、データベースからエントリを取得し、ノックアウトを使用してフォームに事前入力します。入力したとおりに html を表示するために、ビュー モデルにバインドされているすべてのデータに対して関数を呼び出して、エンティティを削除してアンパサンドや角かっこなどの楽しいものに戻します。

var viewModel = {
property : ko.observable(decode_entities(varContainingUserInput)),
....
}

div や p タグなどのほとんどの html 要素にバインドする場合、ノックアウト html バインディングを使用して、エンティティを印刷する前にデコードできることを私は知っています。これにより、decode_entities 関数を呼び出す必要がなくなります。ただし、これは入力フィールドでは機能しません。

decode_entities 関数を削除するか、コード全体に散らばらないようにノックアウトにロールアウトしたいと考えています。追加の作業を行って、バインド内のエンティティをデコードするだけのノックアウトを取得したいと考えています。

4

1 に答える 1

0

オブザーバブル ( http://knockoutjs.com/documentation/extenders.html ) を拡張して、特に数値エクステンダーを確認できます。

カスタムバインディングを使用することもできますが、この場合はオブザーバブルを拡張する方が良い解決策になると思います。

于 2013-04-03T13:00:32.117 に答える