2014-04-01 3 views
0

ember.js 주위에 내 머리를 감싸려고합니다.Ember 모델의 'hasMany'관계가로드되지 않았습니다.

필자는 녹음 및 설명의 두 가지 모델 (고전적인 게시 및 주석 예를 상상해보십시오)을 가지고 있습니다.

내가하고있는 일은 각 녹음에 대한 모든 설명과 함께 한 페이지에 모든 녹음을 표시하는 것입니다. 각 녹음 옆에는 해당 녹음에 대한 새로운 설명을 작성하는 입력 상자가 있습니다.

이제 모든 것이 정상적으로 작동하는 것 같습니다. 댓글을 추가 할 수 있으며 해당 댓글의 댓글 목록에 동적으로 추가됩니다. 그러나 페이지를 새로 고칠 때 코멘트는 표시되지 않고 기록 만 표시됩니다.

중첩 된 {{#each}} 루프를 사용하여 댓글을 표시하고 있지만 동적으로 댓글을 추가 할 때 문제가 없으므로 잘 모르겠습니다. 여기에 (업데이트) JSBin 있습니다

: http://emberjs.jsbin.com/worulexe/12/edit

UPDATE 그래서

, 나는 (의견)를 기록 모델의 관계가 부하에 채워지지 않습니다 것을 알아 냈어요 . 왜 그런가요?

// The models are loaded like this in the IndexRoute 
    this.store.find('recording'); // <- this loads all the record models, but doesn't set the "comments" relations. 

서버는 하나 개의 코멘트를해야

{ 
"comments": [{"id":1,"text":"Invisible when page loaded","recording_id":1}], 
"recordings":[ 
{"id":1,"filename":"rec-01.mp3","comment_ids":[1]}, 
{"id":2,"filename":"rec-02.mp3","comment_ids":[]} 
] 
} 

첫 번째 레코드를 반환하지만로드되지 않는 이유는 무엇입니까?

+0

비슷한 문제가 있습니다. 그것은 5 개 중 4 개가 작동합니다. 일부 경주 조건 : O? 하지만 경로를 디버깅 해보시겠습니까? –

답변

0

마지막으로 ruddy 문제가 발견되었습니다. 엠버의 문서화에 대한 좌절감과 강한 부정적인 감정을 다른 사람들과 몇 시간이나 다른 시간에 구하기를 희망합니다.

당신이 "active_model_serializers"를 사용하는 경우 레일에 대한 보석 (ActiveModel :: 직렬 변환기)를 사용하면 엠버의 App.ApplicationAdapter = DS.ActiveModelAdapter.extend()와 App.ApplicationSerializer = DS.ActiveModelSerializer를 사용할 필요가 있다고 밝혀졌습니다. extend()

Ember는 훌륭한 프로젝트이지만, 문서화로 인해 완전히 열매를 맺습니다.

0

JSBin에 다음 코드가 있습니다. 모든 생성 경로로부터 상속 경로를 선언하는 index 경로에 대한 경로를 선언하지 않는

// Default index route 
App.Route = Ember.Route.extend({ 
    ... 
}); 

. 그리고 어떤 경로도 선언하지 않았기 때문에 경로의이 모두 상속되며 경로의은 모두 같은 모델입니다. 대신 App.IndexRoute을 사용하십시오.

그리고 저를 두 번째로 안내합니다. ApplicationControllerArrayController에서 확장되므로 예상되는 모델은 어떤 유형의 배열입니다. 그러나 위의 이유로 모델은 실제로 객체이므로 실제로는 each 루프가 실행되지 않습니다.

이러한 문제를 해결하고 JSBin을 업데이트하면 중첩 된 each 루프 (근본적으로 문제가있는 경우)를 사용하여 루트 문제를 해결할 수 있습니다.

+0

경로 힌트를 보내 주셔서 감사합니다. 문제는 JSBin에서 해결했습니다. 주요 문제는 JSON 형식으로 밝혀졌습니다 (답변 http://stackoverflow.com/a/22882752/3484659 참조). Ember의 설명서를 따르고 있다고 생각했지만 의사가 일주일 된 것 같습니다. – Codaster

관련 문제