【问题标题】:How to get and set models from a nested Json Structure using backbone如何使用主干从嵌套的 Json 结构中获取和设置模型
【发布时间】:2014-07-22 13:16:04
【问题描述】:

我是 Backbone 的新手,需要帮助才能使用 Backbone 从嵌套的 Json 结构中获取和设置模型

我在下面有一个简单的模型和集合

型号:

var PmaslDataModel = Backbone.Model.extend({ });

收藏:

app.PmaslDataCollection = Backbone.Collection.extend({
          url APPLICATION_URL+'aslview/getformatedDataRows',
          model         : PmaslDataModel 
    });

初始化集合

var pmaslDataCollection =   new app.PmaslDataCollection();

获取上面的集合返回下面Json格式的数据

{
"id"    : "1",
"rowid" : "1",
"group" : "10__",
"datarows": [
             {
               "id": "sspvk_code",
               "default_display": "1",
               "order": "1",

            },
            {
               "id": "sspvk_code2",
               "default_display": "0",
               "order": "0",
           },
           {
               "id": "sspvk_code3",
               "default_display": "1",
               "order": "0",
           }
         ]
},
{
   "id"    : "2",
   "rowid" : "2",
   "group" : "11__",
   "datarows": [
                {
                  "id": "sspvk_code",
                  "default_display": "1",
                  "order": "1",

                },
                {
                   "id": "sspvk_code2",
                   "default_display": "0",
                   "order": "0",
                },
                {
                   "id": "sspvk_code3",
                   "default_display": "1",
                   "order": "0",
                }
            ]
}

我必须使用上面的结构来填充表中的值,其中我们有行 ID,行中的列值出现在 datarows 属性中

我有 2 个问题

  1. 如何将所有数据行的“default_display”值设置为 0 id=sspvk_code ?
  2. 如果我有一个特定的行 ID,我如何获取该行的数据行 行,将其传递给下划线模板并填充模板(即 是,在模板中我需要使用 model.get('attributename value') 访问它

【问题讨论】:

    标签: backbone.js model get set


    【解决方案1】:

    1) 初始将 default_display 设置为 0 到所有具有 iddatarows > “sspvk_code”(这就是你想要的吗?)你可以像这样使用 parse 方法我会说:

    app.PmaslDataCollection = Backbone.Collection.extend({
      url   : APPLICATION_URL+'aslview/getformatedDataRows',
      model : PmaslDataModel,
    
      parse : function (response) {
        // ititerate through entire collection
        _.each(response, function (row) {
          // find datarow with sspvk_code id and set default_display to 0
          _.each(row.datarows, function (datarow) {
            if (datarow.id === "sspvk_code") {
              datarow.default_display = 0;
            }
          })
        })
    
        return response;
      }
    });
    

    2)“获取数据行”是什么意思?您的 JSON 看起来您已经收集了数据行。

    【讨论】:

      【解决方案2】:

      2.如果我有一个特定的行 ID,我如何获取该行的数据行 行,将其传递给下划线模板并填充模板(即 是,在模板中我需要使用 model.get('attributename 值')?

      获取集合后,json 数据将被设置为集合中的模型。因此,您可以从集合中使用Collection's findWhere 方法选择具有指定行ID 的模型。

      在你的情况下,在你的收藏中,

      this.findWhere({rowId:2});
      

      1.如何将id=sspvk_code的所有数据行的“default_display”值设置为0?

      我想这应该是服务器设置默认值而不是在这里设置的责任。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-08-19
        • 1970-01-01
        • 1970-01-01
        • 2012-03-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多