1

backbone と rivets.js を使っているがフォームタグ以外のタグを入力に使いたい

<h2 contenteditable="true" data-text="post.title"></h2>

それは可能ですか?

4

1 に答える 1

2

contenteditable を通常使用する要素 (h1、h2、p など)changeは、テキスト コンテンツが変更されたときにイベントを発生させないため、これらの別のイベント( blurkeyupまたは HTML5inputイベント (この最新のブラウザーをターゲットにしている場合は、これが最適なオプションです)。

これを行うには、独自のカスタム バインダーを作成する必要があります。このバインダー内では、テキスト バインディングと同じルーチンを再利用できますが、バインド/バインド解除のコールバックは明らかに異なります。

rivets.binders.content = {
  routine: rivets.binders.text,
  bind: function(el) {
    var self = this
    this.callback = function() {
      rivets.config.adapter.publish(self.model, self.keypath, el.textContent)
    }
    el.addEventListener('input', this.callback, false)
  },
  unbind: function(el) {
    el.removeEventListener('input', this.callback, false)
  }
}

これは、このカスタム バインダーが使用されていることを示すフィドルです(Chrome 22 と Safari 6 でのみテストされています)。

于 2012-11-04T20:51:06.447 に答える