1

有没有人遇到过 Etch.js 在 Backbone.Marionette.js 应用程序中的集成?

我在绑定保存事件时遇到问题。这是我的木偶视图的代码:

MyApp.module('Views', function(Views, App, Backbone, Marionette, $, _) {

    Views.DetailsView = Marionette.ItemView.extend({

        template: '#details',

        initialize: function(options) {
            _.bindAll(this.model, 'save'); // I think the problem is related to the binding
            this.model.bind('save', this.model.save);
        },

        events: {
            'mousedown .editable': 'editableClick'
        },

        editableClick: etch.editableInit
    });
});

在我的模板中,我有以下内容:

<div id="detail-expanded">
     <p>Description: <span class="editable">{{ description }}</span></p>
</div>

插件已正确加载,如果单击该字段,我可以看到 Etch 按钮栏,我可以编辑可编辑元素的内容,如果单击保存按钮,我实际上可以触发模型 save()方法。

问题是提交的模型是原始模型,没有我对该字段所做的编辑。我认为这是一个有约束力的问题,有什么想法吗?

预先感谢,一如既往。

4

2 回答 2

1

所以,这里的问题与牵线木偶并没有真正的关系,它是 etch 不处理将数据从可编辑字段移动到模型。我应该在文档中更明确地说明这一点。您要做的是在视图上创建一个保存功能,为您执行此操作,如下所示:

Views.DetailsView = Marionette.ItemView.extend({

    template: '#details',

    initialize: function(options) {
        _.bindAll(this, 'save');
        this.model.bind('save', this.save);
    },

    events: {
        'mousedown .editable': 'editableClick'
    },

    editableClick: etch.editableInit,

    save: function() {
      // populate model attrs from dom
      var title = this.$('.title').text();
      var body = this.$('.body').text();


      this.model.save({title: title, body: body});
    }
});

对困惑感到抱歉。我可以看到文档在这方面是如何误导的。

于 2012-12-04T20:48:47.747 回答
0

我相信你想要的是

_.bindAll(this, 'save');

代替

_.bindAll(this.model, 'save');
于 2012-12-04T18:39:10.323 回答