2011-12-29 5 views
1

https://github.com/emberjs/data을 참조로 ember 데이터를 사용하려고합니다.Ember 데이터 : findAll을 사용하는 올바른 방법

특히, 배열 컨트롤러를 사용하여 데이터베이스에있는 모든 'Person'개체를 표시하려고합니다. 또한 사용자가 새로운 '사람'을 만들 수있게하려고합니다.

App.peopleController = Em.ArrayController.create 
    content: App.store.findAll(App.Person) 

    newPerson: (name) -> 
    App.store.create App.Person, 
     name: name 
    @set('content', App.store.findAll(App.Annotation)) 

그러나, content 속성에 새로운 사람이 생성 될 때마다 재설정 비효율적 인 것 같다

나는 작동하는 다음과 같은 코드가 있습니다. 나는 마지막 줄을 제거하고 다음에 코드를 변경하는 경우 :

App.peopleController = Em.ArrayController.create 
    content: App.store.findAll(App.Person) 

    newPerson: (name) -> 
    App.store.create App.Person, 
     name: name 

새로운 뷰가 여전히 적 newPerson에 호출에 생성되지만 동일한 개체가 복제됩니다. 기본적으로 새로운 템플릿은 매번 새로운 템플릿 대신 생성 된 첫 번째 개체를 사용합니다. 나는 이것이 다음의 버그와 관련이 있다고 생각한다 : https://github.com/emberjs/data/issues/11.

{{#each App.peopleController}} 
    {{#view App.PersonView contentBinding="this"}} 
    {{#with content}} 
     Client id is {{clientId}} 
    {{/with}} 
    {{/view}} 
{{/each}} 

을 나는 클라이언트 ID는 모든 사람이 개체에 대해 중복 line-- 내가 @set('content', App.store.findAll(App.Annotation))로 하나를 code--의 두 번째 버전을 사용하는 경우 다음과 같이

는 참고로, 내 템플릿 논리이다. 첫 번째 버전에서는 클라이언트 ID가 정확합니다.

여기에 어떤 빛을 비추어 줄 수 있습니까? 이 일을 제대로하고 있습니까? 나의 본능은 이것이 벌레라고 말하고 있지만 확실하지는 않습니다.

답변

4

나는 버그라고 생각합니다. 이 문제를 설명하는 related issue을 게시했습니다.

+0

감사합니다. 잘하면 곧 해결 될 것입니다. – ghempton

+4

버그가 발생했습니다. 수정판을 작성하고 https://github.com/emberjs/data/issues/11에서이 문제에 대한 요청을 제출했습니다. – ghempton

0

대신 #collection보기를 사용해보세요.

ToDo 코드 예제를 참조하십시오. 일부 설명서는 http://guides.sproutcore20.com/using_handlebars.html 섹션 5를 참조하십시오.

희망이 도움이됩니다.

+0

나는 이것을 위해 노력했지만, 여전히 작동하지 않으며 같은 문제가있다. 필자의 이해로,'# collection'은'# each'에 대한 줄임말이며, 기본 컬렉션에있는 각 요소에 대한 뷰가 생성됩니다. – ghempton

관련 문제