2

过去几天,我一直在与 Backbone 作斗争,试图以最佳方式处理用户添加的一些动态元素,并成功地将这些元素与数据库同步。我有一个模型和一个视图。

创建的模型相当简单,它代表数据库中的产品(T 恤)并具有以下属性:id、价格、尺寸、品牌、颜色。

我面临的问题是颜色属性。颜色不能通过设计预先填充(可能很不幸),以允许用户输入任何自定义颜色并随意命名。除了名称之外,用户还必须指定颜色是否可用。单击“添加文本”按钮/链接将在下面的 div 中附加一个输入字段和下拉列表。

我的问题:将这些多种颜色属性添加为模型的一个属性的最佳方法是什么?

当它尝试使用 API 作为颜色属性插入或更新自身并进入数据库(mysql)中的一行时,我需要将所有颜色/可用性值作为一个属性。我相信后端程序员已将此行配置为一种 TEXT。

例如

{"colors": [{"blue":true},{"orange":false},{"white":false}]}

我的想法是,我显然需要在模型中有某种嵌套的 JSON,但我不知道如何正确编写它。任何帮助或为我指明正确方向的东西将不胜感激。

在此处输入图像描述

4

1 回答 1

2

好的,这个解决方案涉及 jQuery 可能有点过多,但应该可以正常工作。基本上,听听颜色文本框的变化并选择:

events: {
  'change .colorText': 'setColor',
  'change .colorSelect': 'setColor'
},
setColor: function() {
  // here make your `color` attribute's array
  var colors = [];
  this.$('.colorText').each(function() {
    var val, color;
    // adapt the next to navigate to the corresponding select...
    (val = $(this).val()) && (((color = {})[val] = $(this).next().val()) || 1) && colors.push(color);
  });
  this.model.set('colors', colors);
}
于 2013-04-17T22:06:18.267 回答