2012-12-11 3 views
2

나는 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 요청에서 많은 측정 항목 컬렉션을 만들 수있게하려고합니다.

누구든지 이것을 구현하는 방법에 대한 제안이 있습니까? 또는 심지어이 모델/컬렉션 레이어를 나타내는 더 나은 방법?

답변

1

질문에 직접 대답하지 않는 동안 - graphene을 보셨습니까? - 흑연의 자바 스크립트 대시 보드이고 backbone.js을 사용하고 있습니다. 어떻게 구현되었는지 보거나 아이디어를 빌리거나 훔칠 수 있습니다.

사이드 노트 - 다른 짐승 (내 생각에는 플러그에 대해 미안하지만 giraffe)을 구축 한 경험에서 와일드 카드 대상을 흑연과 일치시키는 데 어려움이 있습니다. 주된 이유는 반환되는 대상의 수를 알 수 없다는 것입니다. 예를 들어, 그래프에서 해당 대상 중 하나가 빨간색으로 표시되거나 시간 기반 이벤트를 표시하기 위해 무한대로 그리는 주석 자처럼 대상을 추가하려는 경우 까다로울 수 있습니다. 와일드 카드 및 멀티 타겟 요청을 흑연으로 작업 할 때 염두에 두어야 할 점입니다.

관련 문제