如何使用Backbone Collection获取此JSON结果?

时间:2013-02-13 03:34:55

标签: javascript json backbone.js

我有以下JSON回复

{
   "results":[
      {
         "Product":{
            "id":"1",
            "short_name":"Infra - 2200 CAS Sma SIMO onl [DAS.1.1]",
            "serial_number":"DAS.1.1",
            "created_by":"Wesley Jace Tan",
            "modified_by":"Wesley Jace Tan",
            "created":"2013-02-11 07:58:20",
            "modified":"2013-02-11 07:58:20",
            "full_name_type":"2200",
            "full_name_cas_stk":"CAS",
            "full_name_size":"Small",
            "full_name_simo_mimo":"SIMO only",
            "full_name_product_code":"(2961-737)",
            "uom":"lot",
            "material":"Infra"
         },
         "Price":[
            {
               "id":"1",
               "product_id":"1",
               "source_file":"LTE Test File.xls",
               "for_financial_year":"FY12_13",
               "created_by":"Wesley Jace Tan",
               "modified_by":"Wesley Jace Tan",
               "created":"2013-02-11 07:58:20",
               "modified":"2013-02-11 07:58:20",
               "gross_unit":"50.00",
               "gross_total_value":"0.00",
               "gross_total_formula":"=K12*J12",
               "incentive_value":"5",
               "incentive_formula":"5",
               "net_price_unit":"0.00",
               "net_price_total_value":"0.00",
               "net_price_total_formula":"=N12*J12"
            }
         ]
      },
      {
         "Product":{
            "id":"2",
            "short_name":"Infra - 2200 CAS Sma SIMO to  [DAS.1.2]",
            "serial_number":"DAS.1.2",
            "created_by":"Wesley Jace Tan",
            "modified_by":"Wesley Jace Tan",
            "created":"2013-02-11 07:58:20",
            "modified":"2013-02-11 07:58:20",
            "full_name_type":"2200",
            "full_name_cas_stk":"CAS",
            "full_name_size":"Small",
            "full_name_simo_mimo":"SIMO to MIMO Retrofit",
            "full_name_product_code":"(2961-737)",
            "uom":"lot",
            "material":"Infra"
         },
         "Price":[
            {
               "id":"2",
               "product_id":"2",
               "source_file":"LTE Test File.xls",
               "for_financial_year":"FY12_13",
               "created_by":"Wesley Jace Tan",
               "modified_by":"Wesley Jace Tan",
               "created":"2013-02-11 07:58:20",
               "modified":"2013-02-11 07:58:20",
               "gross_unit":"11.00",
               "gross_total_value":"0.00",
               "gross_total_formula":"=K13*J13",
               "incentive_value":"24",
               "incentive_formula":"24",
               "net_price_unit":"0.00",
               "net_price_total_value":"0.00",
               "net_price_total_formula":"=N13*J13"
            }
         ]
      },
      {
         "Product":{
            "id":"3",
            "short_name":"Infra - 2200 CAS Sma Full MIM [DAS.1.3]",
            "serial_number":"DAS.1.3",
            "created_by":"Wesley Jace Tan",
            "modified_by":"Wesley Jace Tan",
            "created":"2013-02-11 07:58:20",
            "modified":"2013-02-11 07:58:20",
            "full_name_type":"2200",
            "full_name_cas_stk":"CAS",
            "full_name_size":"Small",
            "full_name_simo_mimo":"Full MIMO",
            "full_name_product_code":"(2961-737)",
            "uom":"lot",
            "material":"Infra"
         },
         "Price":[
            {
               "id":"3",
               "product_id":"3",
               "source_file":"LTE Test File.xls",
               "for_financial_year":"FY12_13",
               "created_by":"Wesley Jace Tan",
               "modified_by":"Wesley Jace Tan",
               "created":"2013-02-11 07:58:20",
               "modified":"2013-02-11 07:58:20",
               "gross_unit":"12.00",
               "gross_total_value":"0.00",
               "gross_total_formula":"=K14*J14",
               "incentive_value":"5",
               "incentive_formula":"5",
               "net_price_unit":"0.00",
               "net_price_total_value":"0.00",
               "net_price_total_formula":"=N14*J14"
            }
         ]
      }
   ]
}

检索上述数据的网址是/products/index.json

检索产品数据第2页的网址是/products/index.json/page:2

我已将以下内容写成Collection

<script type="text/javascript">
    (function ($) {
        window.AppView = Backbone.View.extend({
            el: $("body")
        });
        var appview = new AppView;

        var Products = Backbone.Collection.extend({
            model: Product, 
            url: '/products/index.json'
        });

        Products.fetch();
    })(jQuery);
</script>

我想我错误地写了Products集合。

请告知。

更新

这是我的新代码http://jsfiddle.net/Cw6PT/

这是我现在的错误消息:未捕获TypeError:对象函数(){return c.apply(this,arguments)}没有方法'fetch'

1 个答案:

答案 0 :(得分:2)

您的ProductsCollection类,而不是Collection对象。将代码更改为

new Products().fetch()

var Products = new (Backbone.Collection.extend(...))

应该有效。此外,如果要自定义如何解析JSON回复,可以覆盖collection.parse