2016-06-27 2 views
0

$ scope.watch를 사용하여 자동 완성을 하려는데 완벽하게 작동하지만 옵션을 선택하면 항목을 클릭하여 입력을가하지만 항목은 표시하지 않습니다. 입력에 넣을 때 시계가 다시 활성화되기 때문에 숨길 수는 없습니다 ...시계로 자동 완성 항목 숨기기

하나를 선택할 때 항목을 숨기는 방법을 모릅니다.

어떤 도움 ..

<input type="text" ng-model="selected" /> 
<ul class="listFavoInbox"> 
    <li ng-repeat="favo in resultAuto" ng-click="itemFavoInbox(favo.first,favo.id)"> 
     {{favo.first}} 
    </li> 
</ul> 
$scope.selected = ""; 
$scope.arrayFavo = [ 
    {'id': 1, 'first': 'John', 'last': 'Depp', 'age':52, 'gender':'male'}, 
    {'id': 2, 'first': 'Sally', 'last': 'JoHanson', 'age':13, 'gender':'female'}, 
    {'id': 3, 'first': 'Taylor', 'last': 'Swift', 'age':22, 'gender':'female'}, 
]; 

$scope.$watch('selected', function() { 
    $scope.resultAuto = []; 
    for(var i=0; i<$scope.arrayFavo.length; i++){ 

     var text = angular.lowercase($scope.arrayFavo[i].first); 
     var search = angular.lowercase($scope.selected); 

     // console.log("text array",text); 
     // console.log("text",$scope.selected); 

     if (search != ""){ 
      if (text.indexOf(search) !== -1){ 
       $scope.resultAuto.push($scope.arrayFavo[i]); 
      } 

      console.log($scope.resultAuto); 
     } 
    } 
}); 

$scope.itemFavoInbox = function (name,id){ 
    $scope.selected = name; 
    $scope.resultAuto = ""; 
} 

답변

-1

사용할 수있는 NG 숨기기 = TRUE; itemFavoInbox()를 클릭하면; watcher가 작동 할 때 false

0

이 경우 $watch()이 필요하지 않습니다. filter

<input type="text" ng-model="selected" /> 
<ul class="listFavoInbox"> 
    <li ng-repeat="favo in arrayFavo | filter:selected" ng-click="itemFavoInbox(favo.first,favo.id)"> 
     {{favo.first}} 
    </li> 
</ul> 

또는 선택한 필드 filter:{first: selected}를 사용;

Fiddle;

+0

확인, 그것은 좋은,하지만 내 실제 질문을 내가 항목을 선택할 때, 나는 이것이 내 문제이며, 항목 목록을 숨길 필요가있다. – user3810167

관련 문제