2013-05-11 2 views
4

모델 및 라우팅을 정의하여 응용 프로그램 데이터로 사용할 수있는 모델을 작성하는 올바른 방법은 무엇입니까?EmberJS의 단일 모델 빌드

App.Router.map(function(){ 
    this.resource("main", {path:"/"}); 
}); 

App.MainRoute = Ember.Route.extend({ 
    model:function(){ 
     return App.Main.find(); 
    } 
}); 

App.Main = DS.Model.extend({ 
    appName:DS.attr('string') 
}); 


App.Store = DS.Store.extend({ 
    revision: 11, 
    adapter: DS.RESTAdapter.create({ 
    namespace: 'api/v1' 
    }) 
}); 

이것은 결국 api/v1/mains을 호출합니다. 그러나 나는 그것이

내가 구성 복수형에 대해 알고
{ 
    "appName":"MyApp", 
    "lastLogin": "Sat May 11 2013 11:20:03 GMT+0530", 
    ... 
} 

같은 단일 개체 인 응용 프로그램 데이터를 반환 api/v1/main를 호출하지만, 그게 옳은 방법이 아니다 믿고 싶어. 도움이 될 것입니다. 미리 감사드립니다.

편집 : 복수형을 구성 할 때 렌더링되지 템플릿

App = Ember.Application.create(); 

App.Router.map(function(){ 
    this.resource("main", {path:"/"}); 
}); 

App.MainRoute = Ember.Route.extend({ 
    model:function(){ 
     return App.Main.find(); 
    } 
}); 


DS.RESTAdapter.configure("plurals", { 
    main: "main" 
}); 

App.Store = DS.Store.extend({ 
    revision: 11, 
    adapter: DS.RESTAdapter.create({ 
    namespace: 'api/v1' 
    }) 
}); 

App.Main = DS.Model.extend({ 
    "appName":DS.attr('string') 
}); 

JSON은

{ 
    "main": { 
     "app_name": "My App" 
    } 
} 

서버

에서 수신 템플릿 :

<script type="text/x-handlebars" data-template-name="main"> 
    This is {{appName}} 
</script> 
+0

IMO 복수형 구성 방법은 ... – intuitivepixel

+0

시도했지만 템플릿을 렌더링하지 않았습니다 – Diode

+0

어떻게 복수형을 설정 했습니까? 질문에 더 많은 정보를 추가 할 수 있습니까? – intuitivepixel

답변

1

원래 문제가 자동으로 Ember.Arraycontroller의 만들기로 이어질 것입니다 당신이 App.Main.find()를 호출한다는 사실에있다 생성됩니다 MainController (라우팅 이름 지정으로 인해 자동 생성 됨) 이것은 또한 복수형 모델을 요구하는 것입니다.

따라서/main을 가리 키도록 복수형을 수정하면 정보를 검색 할 수 있지만 여전히 Ember.ArrayController 내부에 렌더링됩니다. 따라서이 템플릿을 보려면 {{#each}}을 통해 템플릿을 실행해야합니다.

<script type="text/x-handlebars" data-template-name="main"> 
    {{#each main}} 
    This is {{appName}} 
    {{/each}} 
</script> 

find()에 키를 구문 분석하여 개별 레코드를 식별 귀하의 솔루션, (이미 정확하게 언급 한 바와 같이) 그와 같은 올바른가의 생성을 호출 : 당신이 그것을 템플릿했다면 그래서 아마 일 것이다 싱글 톤 (Ember.ObjectController). 그러면 직접 조사 할 수 있습니다.

0

이 올바른 접근 방식인지 확실하지, 그러나 이것을 불러 냄으로써 해결했습니다.

App.Main.find("data"); 

그리고 서버 측에서 경로 /api/v1/main/data을 정의합니다.

결과

에게 App.Main.find("data"); 기록 목록에서 단일 레코드를 가져 오는 등의 작품과 ObjectControllermain