过去几天我一直在与 Backbone 作斗争,尝试如何最好地处理用户添加的一些动态元素并将其与数据库成功同步。我有一个模型和一个 View 。
创建的模型相当简单,它代表数据库中的产品(T 恤)并具有属性:id、价格、尺寸、品牌、颜色。
我面临的问题是颜色属性。颜色无法通过设计预先填充(这可能很不幸),以允许用户输入任何自定义颜色并根据需要自由命名。除了名称之外,用户还必须指定颜色是否可用。单击“添加文本”按钮/链接将在下面的 div 中附加一个输入字段和下拉列表。
我的问题:将这些多个颜色属性添加为模型的一个属性的最佳方法是什么?
当它尝试使用 API 作为颜色属性插入或更新自身并进入数据库(mysql)中的一行时,我需要将所有颜色/可用性值作为一个属性。我相信后端程序员已将此行配置为文本类型。
例如
{"colors": [{"blue":true},{"orange":false},{"white":false}]}
我的想法是,我显然需要在模型中包含某种嵌套的 JSON,但我不知道如何正确编写它。任何帮助或指引我正确方向的东西将不胜感激。
最佳答案
好吧,这个解决方案涉及 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);
}
关于javascript - 如何处理Backbone中的动态属性并同步到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16070188/