2014-12-04 8 views
0

requirejs를 사용하여 내 녹아웃 구성 요소의 "인스턴스"(싱글 톤)로 매개 변수를 보내고 싶습니다. 녹아웃 도움말은 인스턴스가 아닌 매개 변수 전달의 예제 만 보여줍니다.인스턴스를 사용하여 녹아웃 구성 요소가있는 매개 변수

나는 인스턴스를 사용하고 올바르게 작동하는 다음 코드를 가지고 있습니다.

//module declaration 
function unapAppointments() 
{ 
     rest of code here. 
} 
return { 
     viewModel: { 
      instance: new unapAppointments() 
     }, 
     template: unapp, 

    }; 

내가하고 싶은 것은 아래의 PARAMS 구성 요소에서 전달하는 것과 같습니다. 그러나 이것은 분명히 작동하지 않습니다.

//module declaration 
    function unapAppointments(PARAMS) 
    { 
      use PARAMS 
    } 
return { 
     viewModel: { 
      instance: new unapAppointments(PARAMS) 
     }, 
     template: unapp, 

    }; 

감사

PARAMS에 따라 새로운 인스턴스를 반환
+0

어떻게 그 '매개 변수'를 전달 하시겠습니까? – haim770

+0

여기에 설명 된 것처럼 createViewModel 팩터 리를 사용하려고한다고 생각합니다. http://knockoutjs.com/documentation/component-registration.html#a-createviewmodel-factory-function –

답변

2

shared instance 뷰 모델의 사용을 모순. 이는 viewmodel을 생성자 (accept params) 방식으로 사용하는 것과 같습니다. 당신은 하나의 인스턴스를 생성 바인딩이 적용되기 전에 PARAMS에 때마다 따라 그 내부를 수정하려면

, 당신은 createViewModel 공장 사용할 수 있습니다

define(['knockout', 'text!./unapp.html'], function(ko, unapp) { 

    function unapAppointments() { 
     // rest of code here. 
    } 

    var mySingleton = new unapAppointments(); 

    function unapAppointmentsFactory(params, componentInfo) { 
     // modify mySingleton using params 
     return mySingleton; 
    } 

    return { 
     viewModel: { 
      createViewModel: unapAppointmentsFactory 
     }, 
     template: unapp, 
    }; 
}); 

을하지만이 방법을 사용하여 섬세한이다. 페이지에 여러 구성 요소가있는 경우 바인딩 된 마지막 매개 변수가 우선 적용되고 매개 변수가 다른 매개 변수보다 우선 적용됩니다.

+0

그냥 찾고있는 것이 었습니다. 나는 그것이 공유 인스턴스의 목적에 어긋나는 것 같아요하지만 난 그냥 다른 요구를 사용하는 대신 구성 요소 바인딩에 대한 좋은 params 구문을 사용할 수있는 방법을 찾고 싶었어요. 확실히 생성자가 공유 인스턴스에 허용되어야합니다. :) –