0

Backbone.js Model Concept を通じて、次の JSON (信号の値) を使用する最良の方法を見つけたいと思います。

{
    frequency: "1/1",
    items: [
        {
            value: 1,
            quality: 5
        },
        {
            value: 0.5,
            quality: 5
        }
        ]
}

これまでのところ、次のような level-list プロパティ (例:frequency) のないオブジェクトで使用できる Backbone.Collections のみが表示されます。

[
    {
        value: 1,
        quality: 5
    },
    {
        value: 0.5,
        quality: 5
    }
] 
4

2 に答える 2

1

アイテム配列を独自のコレクションにすることができます。

ここにいくつかのコード例があります

SignalItem = Backbone.Model.extend({
  defaults: {
    value: 0,
    quantity: 0
  }
});

SignalItemCollection = Backbone.Collection.extend({
  model: SignalItem
});

Signal = Backbone.Model.extend({
  initialize: function() {
    // convert the items JSON array into a Backbone collection
    this.get('items') = new SignalItemCollection(this.get('items'));
  }
});

var signal = new Signal({
  frequency: 1,
  items: [
    {
      value: 1,
      quality: 5
    }, {
      value: 2,
      quality: 3
    }
   ]
});

signal.get('frequency') === 1;
signal.get('items').models[0].get('quality') === 5;
于 2012-08-09T14:48:47.477 に答える
0

各信号にバックボーンモデルを使用してから、コレクション内のモデルをグループ化し、コレクション属性を「頻度」にすることができます。そのようです:

var Model_Signal = Backbone.Model.extend({

   defaults: {
      value: 0,
      quality: 0
   },

   initialize: function(){

      // Do some initializing.
      // you'll probably want to set the
      // model's defaults here.

   }

});


var Collection_Signals = Backbone.Collection.extend({

   frequency: null,

   model: Model_Signal,

   calculateFrequency: function(){

      // You'll probably want to do this every time you
      // add a new signal to this collection.

   }

});

次に、JSONオブジェクトをループして、新しいモデルをインスタンス化し、コレクションに追加できます。

var jsonObject = {
   frequency: "1/1",
   items: [
    {
        value: 1,
        quality: 5
    },
    {
        value: 0.5,
        quality: 5
    }
    ]
};



// Instantiate the collection
var signalCollection = new Collection_Signals();

_.each(jsonObject.items, function(item){

  var signalModel = new Model_Signal({value: item.value, quality: item.quality});
  signalCollection.add(signalModel);
  signalCollection.calculateFrequency();

});
于 2012-08-09T15:11:25.207 に答える