オブザーバブルを編集可能な div テキスト コンテンツにバインドするにはどうすればよいですか?
質問する
7086 次
2 に答える
35
編集したdivのコンテンツをオブザーバブルに書き戻すことができるように、デフォルトの「テキスト」バインディングを変更する必要があります。このタスクの単純なカスタムバインディングハンドラは、次のようになります。
ko.bindingHandlers.editableText = {
init: function(element, valueAccessor) {
$(element).on('blur', function() {
var observable = valueAccessor();
observable( $(this).text() );
});
},
update: function(element, valueAccessor) {
var value = ko.utils.unwrapObservable(valueAccessor());
$(element).text(value);
}
};
ただし、このサンプルコードにはjQueryが必要であることに注意してください。
使用法はこれと同じくらい簡単です:
<div contentEditable="true" data-bind="editableText: foo"></div>
次に例を示します(CoffeeScriptで記述):http://jsfiddle.net/aBUEu/1/
于 2012-07-12T09:40:18.773 に答える
4
編集可能な div のテキストを変更しても、モデルの値を更新するイベントが発生しないため、デフォルトではこれを行うことはできません。
これにはカスタム バインディングが必要です。ここでそれについて読むことができます: http://knockoutjs.com/documentation/custom-bindings.html
于 2012-07-12T09:28:12.960 に答える