2013-08-28 3 views
0
<div> 
<div data-bind="compose:'viewmodels/header'"></div> 
</div> 

위의 코드 줄에 표시된대로 Durandal Composition을 사용하고 있습니다. 컴포지션을 사용하는 동안 내 뷰 모델에 몇 가지 추가 매개 변수를 전달할 수 있습니까? 예를 들어 main.js 파일에서 일반적으로 전달되는 'durandal/app', 'durandal/viewLocator', 'durandal/system'매개 변수는 무엇입니까? 난 당신이 ActivationData로 배열을 전달할 수 있다고 생각하지 않습니다Durandal 구성

compose: { 
           model:'yourModel', 
           view: 'yourView', 
           activationData: [param1, param2], 
           activate: true } 

답변

2

예처럼 activationData를 전달할 수 있습니다. 하지만 JavaScript 객체 내부에 배열을 전달할 수 있습니다. 나는 어딘가에 대해 뭔가를 읽은 것을 기억하는 것 같다.

+0

activate 메서드에서 전달 된 매개 변수에 액세스하려면 어떻게해야합니까? – user2585299

+0

like {activate : function (param1, param2) {console.log ([param1, param2])}} –

+0

예, 전에 시도한 적이 있지만 활성화하려고 할 때도 activate 함수에서 값을 계속 가져옵니다. 10과 같은 상수 값입니다. – user2585299

0

:

0

durandal 버전 1.1에서는 composition.js의 tryActivate 메소드 내에서 viewModel.activator(). activateItem()을 호출하는 동안 activationData가 전달되지 않습니다.

function tryActivate(settings, successCallback) { 
    if (shouldPerformActivation(settings)) { 
     viewModel.activator().activateItem(settings.model).then(function (success) { 
      if (success) { 
       successCallback(); 
      } 
     }); 
    } else { 
     successCallback(); 
    } 
} 

만 뷰 모델 매개 변수가 위에서 볼 수 있듯이 activateItem에 전달했다 : 아래 그림과 같이 I는 뷰 모델에 activationData의 값을 얻기 위해 명시 적으로 통과시켰다. 거기에서 다음과 같이 activationData 매개 변수를 전달했습니다.

viewModel.activator().activateItem(settings.model,settings.activationData).then(function (success) { 
      if (success) { 
       successCallback(); 
      } 
     });