2017-12-22 4 views
1

약 2 개월 동안 녹아웃을 배웠습니다. 어쩌면이 바보 같은 질문 일 수 있습니다. 텍스트 입력으로 필터링되는 목록을 만들려고했습니다. 이 필터는 동시에지도에서 마커를 숨기거나 표시합니다. 내가 정말로 문제가 knockout면 또는 html 바인딩면에 있는지 나는 모른다. 나를 올바른 방향으로 안내해 주시겠습니까? 이 문제와 코드의 샘플 코드입니다 : "keydown"다음에 필터링 된 목록 표시 knockoutjs를 사용하는 텍스트 상자

self.filteredPlaces = ko.computed(function() { 
     var filter = self.query().toLowerCase(); 
     if (!filter) { 
     ko.utils.arrayForEach(self.markers(), function (item) { 
      item.setVisible(true); 
      //I used the console.log to verify that the info was being fetch 
      console.log(item.city); 
     }); 
     return self.markers(); 
     } else { 
     return ko.utils.arrayFilter(self.markers(), function(item) { 
      // set all markers visible (false) 
      var result = (item.city().toLowerCase().search(filter) >= 0); 
      item.setVisible(result); 
      return result; 
     }); 
     } 
    }); 

이 또한 내가 바이올린 설치 당신이보기에 녹아웃 객체를 바인딩 initMapko.applyBindings(viewModel)를 호출 할 필요가 here

+0

녹아웃 오브젝트를보기에 바인딩하지 않습니다. 이렇게하려면 initMap 함수에서 "ko.applybindings (viewmodel)"을 사용해야합니다. 그러면 도시 바인딩이 나타납니다. 다음으로, 당신은 관찰 할 수있는 쿼리 (subscribe)를 호출해야합니다. –

+0

나에게 어떻게 도와 줄 수 있니? –

+0

Ok, 문제 없음. 먼저 initMap과 ko.applyBindings에 관해 제안한 작업을 수행하여 목록을 표시합니다. 지금 목록을 보시겠습니까? –

답변

0

에 대한 링크가 있습니다. the documentation에서 :

가 넉 아웃을 활성화하려면 <script> 블록에 다음 줄을 추가 : 당신이 때 쿼리 변경 조치를 취할 수 있도록 ko.applyBindings(myViewModel);

을 또한 쿼리에 subscribe에 관찰 필요 . 고급 사용자를위한

, 당신은 관찰 가능한 변경 통지 에 자신의 구독을 등록 할 경우, 당신은 자신의 전화 기능을 구독 할 수 있습니다. 예 :

myViewModel.personName.subscribe(function(newValue) { 
    alert("The person's new name is " + newValue); 
}); 
+0

이유를 모르지만 구독 할 필요가 없습니다. –