1

backbone.js + underscore.js 初心者です。ここにすでに回答がある場合は申し訳ありません。多分私は正しい質問を持っていません。

私は単純なテンプレートを持っています:

<script type="text/template" id="item-template">
 <div>
   <input id="todo_complete" type="checkbox" <%= Completed ? 'checked="checked"' : '' %>            />
    <%= Title %>
  </div>
</script>

そして次のビュー:

define(["backbone", "underscore", "jquery"],function (Backbone, _, $) {
var todoView = Backbone.View.extend({
    tagName: 'li',
    todoTpl: _.template($('#item-template').html()),

    events: {
        'change input': 'edit',
    },

    initialize: function() {
        this.$el = $('#todo');
    },

    render: function() {
        this.$el.append(this.todoTpl(this.model.toJSON()));
        this.input = this.$('.edit');
        return this;
    },

    edit: function(val) {
        //console.log(this);
        //console.log(_(this.el));
    },
});
return todoView;
});

そしてモデル:

define(["backbone", "underscore", "jquery"], function (Backbone, _, $) {
var Todo = Backbone.Model.extend({
    defaults: {
        Title: '',
        Completed: false
    }
});
return Todo;
});

render を実行した後はすべて正常に動作しますが、フォーム内のデータの編集を開始した後 (チェックボックスの状態を変更するなど)、View 内のモデルが変更されません。正しい方法で変更する方法。

ビュー内のすべての入力変更にイベントを追加し、モデル全体のすべての属性の値を手動で変更できることを知っています。この場合のベストプラクティスは何ですか?

事前にどうもありがとう!

4

2 に答える 2

3

ベスト プラクティスは、Two-Way Bindingと呼ばれます。双方向バインディング用の優れたバックボーン拡張機能が 2 つあります。

私はstickitに慣れていますが、それは本当に簡単です。

于 2013-12-11T13:13:23.240 に答える