Backbone Marionette将集合提取到数组

时间:2016-08-05 01:47:04

标签: javascript backbone.js marionette

我是Backbone和Marionette的新手,在尝试调用Backbone Collection并将其转换为数组时,我感到很困惑。

这是我的收藏代码

programming.module("Program", function(Program, programming, Backbone, Marionette, $, _){
    Program.salesM = Backbone.Model.extend({
        defaults : {

        }
    })

    Program.salesC = Backbone.Collection.extend({
        model : Program.salesM
    })

    var data;
    var initializeData = function(){
        data = new Program.salesC([
            {
                id : "1",
                tanggal : "12/08/2016",
                produk : "T-Shirt",
                jumlah : "1"
            },
            {
                id : "2",
                tanggal : "12/08/2016",
                produk : "T-Shirt",
                jumlah : "2"
            },
            {
                id : "3",
                tanggal : "13/08/2016",
                produk : "Case",
                jumlah : "3"
            },
            {
                id : "4",
                tanggal : "13/08/2016",
                produk : "T-Shirt",
                jumlah : "2"
            },
        ])
    }

    var API = {
        getData : function(){
            if(data===undefined){
                initializeData();
            }
            return data;
        }
    }

    programming.reqres.setHandler("data:entities", function(){
        return API.getData();
    })


})

这是来自另一个文件的部分代码,用于请求集合

var dataChart = programming.request("data:entities");
console.info(dataChart.get("tanggal")

这不是错误,但我对此感到困惑。我尝试制作dataChart.get("tanggal"),但它返回undefined

我尝试将此集合转换为此格式,但我无法

var tanggal = ['tanggal on id 1','tanggal on id 2','tanggal on id 3']
var jumlah = ['jumlah on id 1','jumlah on id 2','jumlah on id 3']

太困惑了。请任何人帮助我。

2 个答案:

答案 0 :(得分:0)

假设您正在使用dataChart变量中的propwrly。 由于在initializeData中,您将向Program.salesC类型的新对象添加四个成员的数组,因此您的数据将包含四个类型为Program.salesM的模型。 为了获得您想要获得的结果,您应该使用以下

var tanggal = dataChart.pluck('tanggal');
var jumlah  = dataChart.pluck('jumlah ');

答案 1 :(得分:0)

代码在data函数中返回getData,它是一个主干集合,最终存储到dataChart变量中。

如果您查看Backbone Collection Documentation,您会看到:

  

集合是有序的模型集。

集合的

get方法返回参数id中具有指定get的模型。

现在,如果您尝试访问dataChart.get( "tanggal" ),则无法获得所需内容,因为dataChart集合和{{1} }是集合中模型的属性。

您可能需要根据自己的需要重新构建代码,但是如果您确实想要访问模型的tanggal属性,则可以执行tanggal,其中{{1} }}是集合中模型的dataChart.at( 0 ).get( 'tanggal' )。或者您可以使用该集合可用的these underscore methods

相关问题