javascript - 如何处理Backbone中的动态属性并同步到数据库

标签 javascript jquery backbone.js

过去几天我一直在与 Backbone 作斗争,尝试如何最好地处理用户添加的一些动态元素并将其与数据库成功同步。我有一个模型和一个 View 。

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

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

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

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

例如

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

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

enter image description here

最佳答案

好吧,这个解决方案涉及 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/

相关文章:

javascript - javascript 在 WordPress 中应该放在哪里,只有 single.php 才需要?

javascript - Cordova iOS 音频和视频标签的静音属性不起作用?

javascript - 无法在 javascript 中建立 neo4j - bolt 驱动程序连接

javascript - SlickGrid 中可以使用可变行高吗?

javascript - Backbone Jquery Click 在 iOS 上出现巨大延迟

javascript - 将变量传递给 jQuery 单击处理程序

javascript - Select2 提交占位符值

javascript - 为 AJAX 添加 onclick 函数

javascript - 跳过第一个可选参数并将第二个参数传递给 Backbone 模型。保存

javascript - Adobe aem cq6.3 不支持backbone.js 的方法、destroy 和 fetch