0

我正在使用 Backbone Marionette 框架,我有这样的情况

在此处输入图像描述

这里每一行都是一个模型,这是一个保存联系人集合的 Marionette CollectionView。现在点击提交按钮,用户可以选择任意数量的联系人,当他点击提交时,我必须调用每个模型。那么最好的方法是什么。

首先,我不知道该怎么做。我知道如何在单个模型上调用 save 。我搜索了几个帖子,但他们没有提供解决方案。

4

2 回答 2

2

您想要的是用户选择的所有模型的数组,因此您可以逐个访问这些模型。

您的问题有两种解决方案。当用户触发 onSelect 事件时,您可以

1)什么都不做

2) 保存对所选模型的引用

然后,当 onSubmit 事件发生时,根据您在上面选择的内容,您必须

(1)解析表格中每个视图的HTML,检查'checkbox'是否被选中,如果是,通过视图的model属性访问模型

(2) 或者,由于您已经保存了一个包含对所选模型的引用的数组,您可以只迭代所述数组

代码必须驻留在哪里?

由于您想要访问在 Marionette.CollectionView 中呈现的所有模型,因此执行此操作的代码需要驻留在所说的 Marionette.CollectionView 中,因为只有在那里您才能访问所有这些模型。

如果您遵循方法 (2),即在选择事件时保存对选定模型的引用,则该代码需要驻留在相应模型的 Marionette.ItemView 中。

解决方案 (2) 示例

var selectedModels = [];

var ItemView = Marionette.ItemView.extend({
    events: {
        'click checkbox': function () {
            selectedModels.push(this.model);
        } 
    }
});

var CollectionView = Marionette.CollectionView.extend({
    itemView: ItemView,
    events: {
        'click .submit': function () {
            _( selectedModels ).invoke(someFunction);
        }
    }
});
于 2013-10-08T10:20:26.280 回答
0

您可能还需要记住,当您遍历选定模型的数组时,最好将整个数组传递到后端并在那里对其进行排序(保存每个模型)。这将帮助您减少对后端的调用量,使用户体验更加友好。

于 2013-10-09T03:16:16.250 回答