그래서 건물에이 엠버 앱이 있으며 지금까지 모든 것이 원활하게 진행되었습니다. 나는 약간의 잼에 빠졌고, 내가해야 할 일을 이해할 수는 없지만, 내가하고 싶은 것을 알고있다. 내가 갇혀있는 장소는 다음과 같습니다. 사용자에 대한 모든 녹음 내용을 표시하고 각 녹음 내용에 대해 필터링 된 버전이 1 ~ 2 개 (어쩌면 나중에 더 있음)가됩니다. 모든 사용자 기록을 표시하는 표에서 각 버전에 대한 링크를 렌더링하고 싶습니다. 현재 우리는 녹음에 대한 공개 ID에 무엇인가를 추가하여 API에서 해당 링크를 형성합니다. 그것은 "검색"에 대한 테이블 셀에, 명확하지 않으면Emberjs : 부모와 자식의 데이터로 복잡한 작업 만들기
이//models
App.User = DS.model.extend({
first_name: DS.attr('string'),
last_name: DS.attr('string')
recordings: DS.hasMany(App.Recording)
});
App.Recording = DS.model.extend({
name: DS.attr('string'),
filter: DS.hasMany(App.Filter)
});
App.Filter = DS.model.extend({
name: DS.attr('string'),
linkPrefix: DS.attr('string')
});
//router
App.Router.map(function(){
this.resource('user', {path: '/:user_id'}, function(){});
});
//User template
<script type="text/x-handlebars" data-template-name="user">
<table class="table">
<thead>
<tr>
<th>Recording Name</th>
<th>Filters</th>
</tr>
</thead>
<tbody>
{{#each recording in recordings}}
<tr>
<td>{{name}}</td>
<td>
{{#each filter in recording}}
//pseudocode here: {{#view should combine linkPrefix + recording_id contentBinding="recording" (maybe??)}}{{filter.name}}{{/view}}
//also need this link to handle the click and set it to "read" once the link has been clicked
{{/each}}
</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</script>
내가 "필터링되지 않은"과 같은 이름을 표시하려면 : 그래서 여기
내가 대해 질문하고 무엇을 설명하는 데 도움이되는 몇 가지 의사입니다 "향상된". 각 이름은 해당 탭의 새 탭에서 열어야하는 적절한 버전의 녹음에 연결되어야합니다.
잠시 동안 고민 끝에 부모 레코딩 ID와 자식 linkPrefix를 뷰로 렌더링하는 방법을 알 수 없었습니다. 큰 문제는 부모 레코딩과 하위 필터를 "알 수있는"뷰를 얻을 수 없다는 것입니다. Filter.name은 케이크 조각 이었지만 이것이 "엠버 방식"이 아닌가하는 두려움이 있습니다. 내 내장은 심지어 각 루프를 사용하지 않고도이 부분을 수행 할 수있는 방법이 있다고 말합니다. 생각?
찬성 투표하지만, 필터 모델은 녹화 모델에 대해 알고하지 않는 것 같습니다. 나는 recording.id에 null이 붙어 있습니다. 이것은 내가 혼자 힘들어했던 곳이지만, 나는 당신의 접근 방식을 좋아합니다. 여기에서 조금 더 어려워 질 것입니다 .... – jasongonzales
그것을 알아 냈습니다. 당신의 접근 방식은 완전히 작동합니다. 그래서 제가 사용한 몇 가지 접근법을 수행하십시오. 부모의 id를 child fixture에 넣지 않는 한, fixture adapter는 이러한 관계를 지원하지 않습니다. 젠장, 나는 이것에 많은 시간을 불었다. – jasongonzales