Javascript 使用watch Angularjs隐藏自动完成项

Javascript 使用watch Angularjs隐藏自动完成项,javascript,angularjs,watch,angularjs-watch,Javascript,Angularjs,Watch,Angularjs Watch,我正在尝试使用$scope.watch制作一个自动完成,它工作得很好,但是当我选择一个选项,在项目中单击时,它会显示在输入中,但项目不会隐藏,因为当我将其显示在输入中时,手表会再次激活 我不知道如何隐藏项目时,我选择了它的一个 任何帮助 <input type="text" ng-model="selected" /> <ul class="listFavoInbox"> <li ng-repeat="favo in resultAuto" ng-click

我正在尝试使用$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>

  • {{favo.first}
$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.resultuto=[];
对于(var i=0;i您可以使用ng hide=true;
单击itemFavoInbox()时;

当watcher将激活时为false

您不需要为此使用
$watch()
。使用


  • {{favo.first}
过滤器:{first:selected}
用于所选字段


好的,这很好,但我真正的问题是,当我选择项目时,我需要隐藏项目列表,这是我的问题。
$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 = "";
}
<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>