Durandal 2.x 앱에서 사용자가 탐색 할 때마다 새 데이터를 가져와야하는보기가 있습니다. 이보기는 자식 라우터를 통해 제공됩니다 : 나는 그러나 overview.js
Durandal 2/자식 메서드에서 한 번만 호출되는 activate 메서드
define(function(){
var vm = {};
vm.activate = function(){
// fetch data here
};
return vm;
});
에 activate
방법의 데이터 페치 로직을 배치 한
define(['plugins/router'], function(router) {
var vm = {};
vm.router = router.createChildRouter()
.makeRelative({
moduleId: 'viewmodels/cms',
fromParent: true
}).map([
{ route: ['inventory', ''], moduleId: 'inventory/overview', title: 'Inventory Management', nav: true }
]).buildNavigationModel();
return vm;
});
, activate
단지 내가 그로 이동 처음이라고합니다 반면, 메인 라우터의보기에서는 매번 activate
이 호출됩니다.
자식 라우터에서 cacheViews: false
을 설정하려고했지만 아무 것도 변경하지 않았습니다. 사용자가보기를 탐색 할 때마다 호출 할
- 어떻게 적용 할 수 있습니다
activate
:나는 또한 내 뷰 모델에
binding
방법이 주위에 너무 때마다 호출됩니다 실현? - 항상 데이터 리프레시를 원할 때 로직을 가져 오는 데 더 좋은 방법이 있습니까?
- 또는 정품 인증 로직을
binding
방법에 적용 할 때 본질적으로 잘못된 것이 있습니까?
보기 모델을 싱글 톤이 아닌 함수로 반환 해 보았습니까? – Brett
메인 라우터의보기가 아닌 자식 경로의보기에 왜 그렇게해야합니까? 직관적 인 의미를 많이 가지지는 않습니다 ... –
메인 라우터에서보기를 캐싱하고 있습니까? – Brett