2014-09-08 4 views
0

저는 Ember.js를 처음 사용하며 Ember.js와 Ember-Data를 프론트 엔드 기술로 사용하는 웹 응용 프로그램을 만들고 있습니다. 독립적 인 모델을 사용하는 페이지에 여러 ember-data 바운드 구성 요소가있을 때 가장 좋은 방법은 무엇인지 이해하려고합니다. 여기 Ember.js 모달 대화 상자의 여러 모델

내가 할 노력하고있어의 종류 :.

https://gist.github.com/redrobot5050/6e775f4c5be221cd3c42

(jsbin 내에서이 요점을을 편집 할 수있는 페이지의 링크가있어 어떤 이유로, 나는를 얻을 수 없다 . 모든 데이터가 올바르게 결합 및 범위에 나타납니다,이 템플릿에서

<script type="text/x-handlebars" data-template-name="index"> 
    <p>Options for graphics quality: </p> 
    <ul> 
    {{#each item in model}} 
     <li>{{item.setting}}</li> 
    {{/each}} 
    </ul> 
    <p>Currently Selected: {{model.selectedValue}}</p> 
    <p>Draw Distance Options:</p> 
    <ul> 
    {{#each item in dropdown}} 
     <li>{{item.distance}} 
    {{/each}} 
    </ul> 
    <p>Currently Selected Distance: {{selectedDistance}} 
</p> 
{{outlet}} 
    <button {{action 'openModal' 'modal' model}}>Change Settings</button> 
    </script> 

: 허영의 URL 오프 '공유'URL)

나는 템플릿과 같이가 . 그러나 모달 대화 상자 내에서 수정하려고하면 품질 만 해당 Ember.Select보기에 바인딩됩니다. controller.set을 사용하여 IndexController에서 바인딩을 강제 실행하려고 시도했지만 작동하지 않는 것 같습니다.

내 인 IndexController는 다음과 같습니다 JSBin 정말 내가 할 시도하고 무엇을 보여줍니다

App.IndexRoute = Ember.Route.extend({ 
    model: function() { 
    var qualityList = this.store.find('quality'); 
    console.log('qualityList=' + qualityList);  
    return qualityList; 
    //return App.Quality.FIXTURES; 
    }, 
    setupController : function(controller, model) { 
    controller.set('model', model); 
    var drawDistanceList = this.store.find('drawDistance'); 
    console.log('distanceList=' + drawDistanceList); 
    controller.set('dropdown', drawDistanceList); 
    controller.set('selectedDistance', 1); 
    //this.controllerFor('modal').set('dropdown', drawDistanceList); 
    } 
}); 

: 나는로드 할/독립적으로 동일한 컨트롤러에서 드롭 다운의 각 바인딩합니다. JSBin은 올바르게 작동하지 않습니다. 왜냐하면이 작업을 수행하는 방법을 알지 못하기 때문입니다. 나는 누군가가이 JSBin을 수정할 수 있는지보고 stackExchange에 게시하여 내가 잘못하고있는 것을 보여 주거나 누군가가 올바른 방향으로 나를 가리킬 수 있다면이 문제를 해결하는 방법을 디자인 방식으로 설명 할 수 있습니까?

(예를 들어, 가능한 해결책은 구성 요소로 드롭 다운을 만들고 해당 컨트롤러를 통해 데이터를로드하거나 상위 컨트롤러의 속성으로 전달할 수 있다고 생각하지만 실제로 무엇이 " 엠버 웨이 ").

답변

0
App.IndexRoute = Ember.Route.extend({ 
    model: function() { 
    return Ember.RSVP.hash({ 
     qualityList: this.store.find('quality'), 
     drawDistanceList: this.store.find('drawDistance') 
    }); 
    }, 
    setupController: function(controller, model) { 
    controller.set('model', model.qualityList); 
    controller.set('dropdown', model.drawDistanceList); 
    } 
}); 

여기에 Ember.RSVP.hash의 문서는 http://emberjs.com/api/classes/Ember.RSVP.html#method_hash이었습니다. 나는 그것이 왜 사라 졌는지 확신하지 못한다.

지금은 http://web.archive.org/web/20140718075313/http://emberjs.com/api/classes/Ember.RSVP.html#method_hash

에서 찾을 수 있습니다.
관련 문제