2012-12-11 4 views
1

나는 게시물 색인을위한 기본 라우터를 가지고 있으며 작업을 표시합니다. 단일 게시물로 이동하면 페이지가 올바르게 렌더링되고 URL은 /#/posts/foo으로 설정됩니다. 그러나 URL을 복사하여 새 탭에 붙여 넣으면 페이지가로드되지만 URL은 /#/posts/null으로 변경됩니다. 다른 것보다 페이지가 제대로 표시되고 오류는 간단한 모델Ember 역 직렬화 URL이 null 인

App.Post = DS.Model.extend({ 
    id:  DS.attr("string"), 
    title: DS.attr("string"), 
    content: DS.attr("string"), 
    image: DS.attr("string") 
}); 

show: Em.Route.extend({ 
    route: "/post/:id", 

    serialize: function(router, context) { 
    return { id: context.get("id") }; 
    }, 

    deserialize: function(router, context) { 
    return App.get("store").find(App.Post, context.id); 
    }, 

    connectOutlets: function(router, context) { 
    router.get("applicationController").connectOutlet("body", "post", context); 
    } 
}) 

을 표시되지 않습니다 및 로그이

STATEMANAGER: Entering root ember.js:17420 
STATEMANAGER: Sending event 'navigateAway' to state root. ember.js:17172 
STATEMANAGER: Sending event 'unroutePath' to state root. ember.js:17172 
STATEMANAGER: Sending event 'routePath' to state root. ember.js:17172 
STATEMANAGER: Entering root.show 

와 라우터처럼 보이는 것을

App.Store = DS.Store.extend({ 
    revision: 4, 
    adapter: DS.RESTAdapter.create({ 
    bulkCommit: false 
    }) 
}); 
+0

'deserialize'기능이 제대로 작동하지 않는 것 같습니다. 문제가 무엇인지는 모르지만 나중에 다시 설명하겠습니다. – mehulkar

답변

0

이 문제가 attrirbute로 id 지정되었다위한 일을 할 것입니다. 절대 그렇게해서는 안되며 Ember Data가 자동으로 처리하도록해야합니다.

App.Post = DS.Model.extend({ 
    title: DS.attr("string"), 
    content: DS.attr("string"), 
    image: DS.attr("string") 
}); 
2

경로가 있어야합니다. 'post/: id'대신 '/ post/: post_id'가되어야합니다. 매개 변수 이름은 소문자로 강조 표시된 모델 이름, 밑줄 및 특성 이름으로 구성됩니다. 당신이 직렬화/역 직렬화하는 방법이 필요하지 않습니다이 방법을 수행

, Ember.js는

+0

당신이 옳았다는 것이 밝혀졌습니다. '/ post/: post_id'를 추가하면 더 이상 serialize를 사용할 필요가 없지만 페이지를 새로 고치면 여전히 null로 바뀝니다. –