2014-05-19 3 views
0

ember-data store 사용을 위해 모델의 기본 키를 변경하는 동안 잠시 동안 노력해 왔습니다. 'Addon'이라는 고정물에는 'id'필드가 없지만 'artifactId'필드가 있습니다. 이 문제를 해결하기위한 여러 가지 제안을 찾았으나 지금까지 아무 것도 시도하지 못했고 그 중 많은 부분이 오래된 것으로 보입니다. 무엇 보이는 것은 그것을 할 가장 최근의 방법이 될 것은 이것이다 :Ember : FixtureAdapter를 사용하여 모델의 기본 키를 변경하십시오.

App.Adapter.map('App.Addon', { 
    primaryKey: 'artifactId' 
}); 

이 그냥 날 준다 "catch되지 않은 형식 오류를 : 속성을 읽을 수 없습니다 정의의 '지도'". 지도를 처음부터 초기화해야합니까? 이 예제에서 찾은 대부분의 예제는 RESTAdapter를 사용합니다 - 단지 거기에서만 작동합니까? 그것은 전체의에

내 app.js는 다음과 같습니다

window.App = Ember.Application.create(); 
App.ApplicationAdapter = DS.FixtureAdapter.extend(); 
App.Adapter.map('App.Addon', { 
    primaryKey: 'artifactId' 
}); 

답변

1

나는 생각한다, 당신은 FixtureAdapter의 현재 기본값으로 모델의 기본 키를 변경할 수 없습니다.

FixtureAdapter는 서버 API와 비슷한 JSON 객체를 제공하지 않으므로 기본적으로 조명기는 표준화 된 형식이어야합니다. 앱 또는 뷰에서 DS.Model의 인스턴스에 액세스하기 때문입니다 그의 primaryKey는 항상 id입니다. 이 모델 속성 ID에 기본 키를 직렬화 할 수 있도록 당신이 설치 모델 시리얼을해야 자신의 어댑터를 사용하므로 경우에만

{{#with model}} 
     model({{id}}): {{name}} 
{{/with}} 

서버는 중 기본 키 속성을 제공 할 수있다. RESTAdapter 또는 FixtureAdapter 중 하나를 사용할 수 있습니다 예를 들어 아래

container.register('serializer:user', DS.RESTSerializer.extend({ 
    primaryKey: 'artifactId' 
})); 

:

http://emberjs.jsbin.com/batih/1/edit

+0

는 난 그냥 잘못하고 있어요 생각합니다. 그냥 특정 URL (단지 CRUD의 '읽기')에서 얻을 수있는 json 문자열이기 때문에 경로를 모델화 할 때 저장소에로드하고로드하는 대신 쿼리를 사용하는 것이 가장 좋은 방법 인 것 같습니다. 거기에서 다시 나가. –

관련 문제