2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

backbone.stickit の select がうまくバインドされないとき

Posted at

backbone.stickit で、<select>に数値型の値をバインドさせようとすると、単純にはうまくいきません。

具体的には、テンプレートが

<select id="category">
  <option value="1">カテゴリ1</option>
  <option value="2">カテゴリ2</option>
</select>

で、JavaScript が

var Model = Backbone.Model.extend({
  defaults: {
    categoryId: 2
  }
});

var View = Backbone.View.extend({
  el: document,

  bindings: {
    '#category': 'categoryId'
  },

  render: function() {
    this.stickit();
    return this;
  }
});

$(function() {
  var model = new Model();
  var view = new View({ model: model });
  view.render();
});

のようなとき、カテゴリ2 が選択されません。
categoryId が、文字列の "2" ならばバインドされますが、属性の型は変えたくない場合が多いと思います。

対処

<option>data-stickit-bind-val 属性を追加することで解決します。

<select id="category">
  <option value="1" data-stickit-bind-val="1">カテゴリ1</option>
  <option value="2" data-stickit-bind-val="2">カテゴリ2</option>
</select>

value の値と同じですが、data-stickit-bind-val は型変換されるので、数値を書いておくと数値型としてバインドされるようになります。

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?