2016-06-17 1 views
0

다른 페이지를로드하는 Index.html (마스터 페이지로 간주 될 수 있음) Home.html, people.html 및 각 페이지에는 자체 viewmodel js 파일 (Home.js, people)이 있습니다. js). Home.html에서 People.html로 이동합니다. Home.js에서는 Ajax 호출을 만들고 People.html 페이지로 이동하면 People.js에서 가져 오는 데이터가 필요합니다. PublishOn과 SubscribeTo를 사용하려했지만 dint 결과를 얻으 려했지만 main.js에서 변수를 만들려고 시도했고 Home.js와 people.js에서이 변수를 사용하려고 생각했지만 $ root를 사용하여 액세스 할 수있었습니다. 그러나 나는 HTML 페이지에서만 이것을 할 수 있지만 Js에서는 할 수 없다. 희망 사항은 분명합니다. ** 참고 : ** 구성을 위해 RequireJs도 사용하고 있습니다.응용 프로그램 전체에서 KnockoutJs의 전역 변수를 유지하는 방법은 무엇입니까?

도와주세요.

+0

문제를 올바르게 이해하고 있는지 잘 모르겠습니다. home.js viewmodel에 저장된 일부 데이터가 있고 리디렉션 후 다른 viewmodel에서이 데이터에 액세스해야합니까? 또는 실제로 하나의 페이지이며 두 개의 뷰 모델을 모두로드했으며이 뷰 모델에 서로 액세스해야합니다. – Martin

+0

"Home.js에서 나는 Ajax 전화를 걸고 People.js에서 가져 오는 데이터가 필요합니다 ..."- 그것이 나를 잃어버린 곳입니다. 나에게 당신이 컨테이너에 변수를 추가 할 수 있어야한다. (당신은'main.js '가 사용되는 곳을 설명하지 않았다.) view-model에서 접근 할 수 있어야한다. 아마도 잘못된 범위에 추가하거나 액세스하는 것일 수 있습니다. – awj

+0

@Martin : home.js viewmodel에 저장된 일부 데이터가 있고 리디렉션 후에 다른 viewmodel에서이 데이터에 액세스해야합니까? "예". 한 번에 두 페이지를 모두로드하지 않습니다. – yashwanth

답변

0

데이터가 완전히 글로벌 인 경우, 한 가지 방법은 Home.htmlPeople.html에 대한 ViewModels의 종속성으로 식별하는 새로운 AMD/RequireJS 모듈을 만드는 것입니다. 그런 다음이 공유 모듈이 데이터를 관리하게합니다. Ajax 호출을 Home의 ViewModel에서이 새로운 공유 모듈로 옮기고 싶다.

$root을 사용하면보기간에 암시적인 계약이 생성됩니다. 어떤 사람들은 이것이 유지하기 어렵다는 것과 자식 뷰 매개 변수를 통해 관계를 문서화하는 것이 더 낫다고 말합니다. 데이터가 전역이 아니고 특정 뷰의 두 자식 뷰간에 만 공유되는 경우 매개 변수를 통해 하위 뷰에 데이터를 전달할 수 있습니다. 녹아웃 구성 요소 또는 Oracle JET 모듈을 사용하고 있습니까? 둘 다 부모보기에서 하위 ViewModel로 매개 변수를 전달할 수 있습니다.

+0

ViewModels에 대한 종속성 매개 변수 전달이 나를 위해 작업을 완료했습니다! 감사 :-) – yashwanth