2013-07-15 5 views
2

일부 개체 (Script)에 대해 부분적으로 정보를로드하고 필요할 때 전체 레코드를 검색합니다. 스크립트 객체가 사전로드되어 나는 자세한 내용과 스크립트를 다시로드하고이, 나는이 위에서 언급 한 상황에 잘 작동rootState.loading을 테스트하는 방법은 무엇입니까?

App.ScriptRoute = Ember.Route.extend({ 
    model: function(params) { 
     return {id: params.script_id}; 
    }, 
    setupController: function(controller, model) { 
     var record = App.Script.find(model.id); 
     record.reload(); 
     controller.set("model", record); 
    }, 
); 

을 사용하고 있습니다. 나는 어떻게

Error while loading route: 
Error: Attempted to handle event `reloadRecord` on App.Script:ember281:StudioMRConverter> while in state rootState.loading. 

: 내가 페이지를 새로 고치거나 URL로 직접 액세스하는 경우, 그러나, 우리는 객체의 사전로드가 설정되어 있지 않고 스크립트 객체는 처음으로로드되고 나는 다음과 같은 오류가 발생합니다 record.reload()을 호출하기 전에 rootState.loading을 테스트하기 위해 내 setupController를 수정 하시겠습니까?

답변

1

레코드를 다시로드하기 전에 먼저 didLoad 이벤트 (model lifecycle)을 청취 할 수 있습니다. 예를 들어

:

App.ScriptRoute = Ember.Route.extend({ 
    model: function(params) { 
    return {id: params.script_id}; 
    }, 
    setupController: function(controller, model) { 
    var record = App.Script.find(model.id); 
    record.on('didLoad', function() { 
     record.reload(); 
    }); 
    controller.set("model", record); 
    }, 
); 
+0

MMH이 새로 고침에 다시로드를 해결하지만 다른 모든 상황에서 다시로드를 잃게됩니다. 어떻게 든 Ember 철학에 반대하여 모델의 부분적인 로딩만을 수행합니까? 또는 App.Script.find (model.id)에 호출하기 전에 부분적으로로드 된 모델을 완전히 제거하거나 무효화 할 수있는 방법이 있습니까? – philstra

+0

아니면 완전히로드 된 레코드와는 다른 네임 스페이스에 부분적으로로드 된 레코드를 유지하기 위해 App.PartialScript 및 App.Script와 같은 두 가지 모델을 정의해야합니까? 하지만 그 말이 맞지 않을 것입니다 ... – philstra

+0

나는 당신의 모델이 지금과 같이 어떻게 보이는지 게시 할 수 있습니까? – intuitivepixel

관련 문제