2013-08-22 1 views
1

중첩 된 foreach 루프의 외부 객체 속성을 함수에 전달하려고합니다. 이 아래의 코드에서 'something' 것입니다,하지만 난 심지어는 하드 코딩 된 문자열로 작업을 얻을 수 없습니다knockoutjs는 중첩 된 foreach 바인딩의 매개 변수를 전달합니다.

<div data-bind="foreach: supportedNetworks"> 

     <div data-bind="text: $data"></div> 

     <div class="span3 social_connect text-right"> 

     <div data-bind="with: $root.Selected"> 
      <div data-bind="foreach: networks">   
       <div id='connected' data-bind="text: $root.checkNetwork.bind($data,'something')"> 
       </div> 

      </div> 
     </div> 
</div> 

이 내 궁극적 인 목표는을하는 것입니다

'connected' 사업부에 function() { [native code] }를 표시 표시되는 네트워크 목록 및 그 중 하나를 foreach, 현재 사용자가 연결되어 있는지 확인, 그의 네트워크 목록과 비교하여 적절한 메시지를 표시합니다.

내 모델은 다음과 같이이다 :

function SocialNetwork(item) { 
    var self=this; 

    self.Id = ko.observable(item.Id), 
    self.Name = ko.observable(item.Name) 
}; 

내가 모두 닫습니다 건가요 :

function viewModel() { 

     var self = this;   

     self.supportedNetworks = ['facebook', 'twitter', 'google']; 

     self.checkNetwork = function (name) { 
      console.log(name); 
      // Display connected or Not connected   
     };      

     .... 
    }; 

선택한 객체 유형의 네트워크를 갖는 사용자 개체입니까? Btw, 문제가있는 경우 버전 2.3.0을 사용 중입니다.

답변

1

호출 .bind은 특정 컨텍스트 및 인수로 실행되는 새 함수를 만듭니다. 따라서 .bind의 결과는 함수이며, 그 다음에 ()을 추가하여 실행할 수 있습니다.

그러나이 경우 당신은 함수 호출의 출력을 원하는 것 같습니다 (바인딩 text 사용), 그래서 당신은 그냥하는 단순화 수 :

data-bind="text: $root.checkNetwork('something')" 
+0

내가이 일을 놓쳤다. 그래서 내가 원하는 완전한 표현은 data-bind = "text : $ root.checkNetwork ($ data.Name(), $ parents [1])"> – LKallipo

관련 문제