我正在寫一個backbone.js的'app',並且想要將json的石墨/碳輸出直接映射到一些主幹模型/集合。backbone.js集合和石墨碳
一般,JSON的輸出是這樣的:
[
{
'target': 'some.string.1',
'datapoints': [ [ val1, timestamp1 ], [ val2, timestamp2 ]... ]
},
{
'target': 'some.string.2',
'datapoints': [ [ val1, timestamp1 ], [ val2, timestamp2 ]... ]
},
...
]
我已經定義了一個簡單的模型和收集這樣的:
class Measurement extends Backbone.Model
defaults:
id: undefined
val: undefined
class Measurements extends Backbone.Collection
model: Measurement
initialize: (model, options) ->
if options.metric
@metric = options.metric
url: ->
'/?target=' + @metric
parse: (data,xhr) ->
if _.size(data) == 1
return _(data[0]['datapoints']).map((d) ->
m = {}
m['id'] = new Date(0)
m['id'].setUTCSeconds(d[1])
m['val'] = d[0]
m
)
undefined
,你可以看到,我重載id來是每個測量的時間戳,並且特定「度量」的所有度量都存儲在稱爲度量的集合中。
我也對它進行了硬編碼,所以它真的只適用於一個Measurements集合(即json中的'target')。
我的問題涉及如何以最佳/優雅/靈活的方式在單個調用中實現多個度量(集合)的收集。即石墨支持爲其「目標」使用通配符,以便對/?target=some.string.*
的ajax請求將帶回所有匹配的目標和數據點(如json示例中所示)。然後,我會把這個呈現給一個視圖,在這個視圖中,我會渲染累計數據或者繪製所有的測量值與時間的關係。
我想使用另一個集合(讓我們稱之爲集合),它將包含許多測量。我希望能夠執行類似Set.fetch()
的操作,以從服務器獲取所有匹配的度量值,並讓Set通過單個ajax請求創建多個度量值集合。
沒有人有任何建議如何實現這個?或者甚至是表示這個模型/集合層的更好方式?