0
같은 뷰 모델 (제어) 정의
그래서 나는 내가 예를 들어 동일한 뷰 모델 내에서 두 개의 서로 다른 장소에서 사용하려는 스크롤 제어 만들었습니다 -Durandal : 두 개의 서로 다른 변수
define(['common/viewmodels/controls/scroller-nav', 'common/viewmodels/controls/scroller-nav'],
function(mainScrollNav, modalScrollNav))
vm = {
activate: activate,
mainScrollControl: ko.observable(null),
modalScrollControl : ko.observable(null)
}
return vm;
function activate() {
vm.mainScrollControl({ model: mainScrollNav, view: 'common/views/controls/mainScroll' });
vm.modalScrollControl({ model: modalScrollNav, view: 'common/views/controls/modalScroll' });
// load up the data that is to be used for each (should be independent)
mainScrollNav.init();
modalScrollNav.init();
}
}
}
제어를 mainScrollControl 및 modalScrollControl이 채워진 두 인스턴스에서 모두 제대로로드되지만 컨트롤이 별도로 정의되어 있어도 데이터가 공유됩니다 (모달의 스크롤러 위치 수정 및 기본 페이지에서 수정 됨). 독립된 viewmodels가 아니라 하나의 서비스 viewmodel에 mainScrollNav 및 modalScrollNav 링크가있는 것처럼 보입니다. 이 올바른 방법으로 가고 있습니까, 아니면 다른 것을 사용해야합니까?
define 함수는 객체를 인스턴스화하지 않고 단순히 필요한 소스 파일을 다운로드하기 때문에 동일한 경로를 다시 반복해도 아무 효과가 없습니다. 대답은 스크롤러의 코드와 반환되는 코드에 따라 다르지만 모델로 직접 설정하는 대신 해당 호출을 원할 수 있습니다. "{model : mainScrollNav(), ..." –
솔루션을 게시하는 것을 완전히 잊었지만 자리는 예스입니다. –