2014-03-19 12 views
2

내 응용 프로그램에 viewmodel/view 쌍이있어 다른 데이터를 표시하는 데 사용됩니다. 표시되는 데이터는 일부 사용자 입력에 의해 생성되고 각 데이터 세트에 대한 별도의 라우트가 라우터에 등록됩니다.Durandal이 동일한 모듈로 이동하여 다른 데이터로 이동하는 경우 다시 바인딩

동일한보기 /보기 모델이 다른 경로에 사용되므로 두 경로를 탐색 할 때 view-viewmodel 간의 바인딩이 새로 고쳐지지 않습니다.

후크 최대 canReuseForRoute callback 뷰 모델을 새로 고칠 수 있지만보기가 새로 고쳐지지 않습니다.

router 바인딩에서 cacheVews을 사용하려고했지만 뷰가 여전히 새로 고쳐지지 않았습니다.

같은 view/viewmodel을 사용하는 다른 경로를 탐색 할 때 라우터/라우팅 구성을 새로 고치려면 어떻게해야합니까?

콜백 binding 콜백 Hooking Durandal은 모듈이 처음 사용될 때만 뷰를 바인딩한다는 것을 발견했습니다. 같은 모듈 (view/viewmodel)을 사용하여 다른 경로로 이동하려고 시도하면 binding 콜백을 다시 호출하지 않습니다.

+0

viewmodels 인스턴스 또는 싱글 톤입니까? 새 경로를 방문 할 때마다 데이터를 다시로드합니까? –

+0

viewmodels은 싱글 톤이지만 임시 해결책으로 나는 durandal에게 모듈을 재 활성화하도록 지시하는'canReuseForRoute'을 사용합니다. 따라서 데이터가 올바르게로드됩니다. 보기를 새 데이터에 다시 바인딩하는 방법을 찾을 수 없습니다. – razvanz

+0

인스턴스를 원하지 않는 이유가 있습니까? 특히 실제로 데이터를 다시로드하는 경우? –

답변

2

활성화 자 as explained in this answer에서 areSameItem을 무시하십시오. false을 반환하면 Durandal이 전체 ​​페이지 수명주기를 다시 거치게되는 반면, canReuseForRoute을 사용하는 것은 반드시 그런 것은 아닙니다.

+0

그럴 수 있습니다. 외관상으로는 아주 기본적인 방법으로 메소드를 구현했기 때문에 뷰 모델에 다른 데이터가 있는지 감지 할 수 없습니다. – razvanz