2013-04-01 3 views
2

총 레코드 수를 기반으로 장치 유형의 공유를 보여주는 간단한 데이터 시각화를 작성합니다. Fixture의 모든 요소를 ​​기반으로 속성을 계산하는 방법이 있는지 궁금합니다.Ember.js : Fixture의 모든 요소를 ​​기반으로 계산 된 속성 설정

App.Devices = DS.Model.extend({ 
    label: DS.attr('string'), 
    measure: DS.attr('number'), 
    share: function() { 
     //code to return measure/fixtureTotal 
    }.property('measure') 
}); 


App.Devices.FIXTURES = [ 
    { id: "0", label: "Computer", measure: 10 }, 
    { id: "1", label: "Mobile", measure: 20 }, 
    { id: "2", label: "Tablet", measure: 30 } 
]         // fixtureTotal = 60 

이 경우 "컴퓨터"는 전체 레코드의 (10/60) 공유를 갖습니다.

계산 된 속성을 사용하여 수행 할 수 있습니까? 아니면 다른 솔루션이 필요합니까? 무엇을 여기, 당신이 모든 장치를 표시하는 ArrayController이 가정 https://github.com/addyosmani/todomvc/blob/gh-pages/architecture-examples/emberjs/js/controllers/todos_controller.js#L32

: 이상적으로이 솔루션은 fixtureAdaptor 또는 RESTAdaptor

감사와 함께 일하는 것이

답변

1

내가 todomvc.com에서 보았던 것과 비슷한 것 같다 나는 시도 할 것이다 :

  • 합계를 계산하고 @each.measure에 의존하는 장치에 대한 ArrayController에서 계산 된 속성을 생성한다.
  • (Device가 자신의 ObjectController를 가리키는 하위보기로 표시된다는 의미) needs: ['devices']을 선언 하위 컨트롤러에 추가하면이 컨트롤러가 Devices 컨트롤러에 종속됨을 나타냅니다.
  • 공유를 계산하는 장치 컨트롤러에서 계산 된 속성을 만들고 measurecontrollers.devices.total에 의존합니다.

은 다음 장치 컨트롤러의 주() 등록 기능에서는 this.get('controllers.devices')를 사용하여 상위 제어기의 인스턴스에 대한 참조를 얻을 수 있고, 또는 심지어 this.get('controllers.devices.total') 직접 전체 속성의 값을 얻을 수있다.


내가 원래 "나는 나 자신을 그것을 시도하지 않은"로 대답을 시작,하지만 난이 작동 할 경우보고 싶어하기 때문에, 여기서 일하는 코드로 JSBin입니다 : http://jsbin.com/ajoqak/12/edit (작동하도록 편집 REST 어댑터 포함).

여기에는 Ember.js 1.0.0-rc2와 며칠 전 제작 한 ember-data 빌드가 있다고 가정합니다 (아직 공식 릴리스가 없습니다). API는 이전 버전을 사용하여 보았던 몇 가지 대답/예제와 조금 다릅니다.

관련 문제