나는 backbone.js 'app'을 작성 중이며 흑연/탄소의 json 출력을 일부 백본 모델/모음에 직접 매핑하고 싶습니다. 당신이 볼 수있는backbone.js 컬렉션 및 흑연 탄소 집합체
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를 과부하 : 내가되도록 간단한 모델 및 수집을 정의
[
{
'target': 'some.string.1',
'datapoints': [ [ val1, timestamp1 ], [ val2, timestamp2 ]... ]
},
{
'target': 'some.string.2',
'datapoints': [ [ val1, timestamp1 ], [ val2, timestamp2 ]... ]
},
...
]
: 일반적으로
는 JSON 출력은 다음과 같이이다 각 측정의 타임 스탬프가되고 특정 '측정 항목'에 대한 모든 측정 값은 측정이라는 모음 아래에 저장됩니다.
또한 하드 코드하여 하나의 측정 컬렉션 (예 : json의 '대상')에서만 작동합니다.
제 질문은 단일 호출로 여러 측정 (수집) 수집을 구현하는 가장 좋은 방법/우아함/유연한 방법에 관한 것입니다. 즉 흑연은 '목표'에 대해 와일드 카드 사용을 지원하므로 /?target=some.string.*
에 대한 ajax 요청은 일치하는 모든 대상과 데이터 포인트 (예 : json 예제에서와 같이)를 다시 가져옵니다. 그러면 뷰에 누적 데이터를 말하거나 시간에 따른 모든 측정 값을 그려 볼 것입니다.
나는 많은 측정 값을 포함하는 다른 Collection (Set이라고도 함)을 사용하려고 생각했습니다. Set.fetch()
과 같은 작업을 수행하여 서버에서 일치하는 모든 측정 값을 얻고 Set에서 단일 Ajax 요청에서 많은 측정 항목 컬렉션을 만들 수있게하려고합니다.
누구든지 이것을 구현하는 방법에 대한 제안이 있습니까? 또는 심지어이 모델/컬렉션 레이어를 나타내는 더 나은 방법?