javascript - 当 AngularJS 列表中找不到输入值时如何显示元素?

标签 javascript jquery html angularjs

我创建了搜索输入来搜索列表中的某些项目。我希望如果项目搜索不在列表内,则可以像 html 代码中那样显示添加按钮:

<div ng-controller="foodCtrl">
    <form>
        <div class="form-group row foodGroupp" >
            <label for="inputFood" class="col-sm-2 col-form-label">food</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="inputFood" ng-model="inputFood" placeholder="Write some food"  ng-keyup="doCheck()">
            </div>
            <span id="addIcon" ng-show="showIcon">
                <button class="btn btn-default">+</button>
            </span>
            <ul ng-show="inputFood" id="foodList">
                <li ng-repeat="foodN in foodName | filter : inputFood">
                        <span>{{ foodN.name}}</span>
                </li>
            </ul>
        </div>


        <div class="form-group row">
            <div class="offset-sm-2 col-sm-10">
                <button type="submit" class="btn btn-primary">הוסף</button>
            </div>
        </div>
    </form>
 </div>

JavaScript 代码如下所示:

var app = angular.module('mainApp', []);

app.controller('foodCtrl',function($scope,$http){

    $scope.foods = [];
    $scope.foodName = [];

    $http.get('/files/foodName.json')
    .success(function(response){
        $scope.foodName = response;
    });

    $scope.showIcon = false;

    $scope.doCheck = function(){
        $(function () {
            if($scope.inputFood != ""){
                var sizeOfList = $("#foodList").find("li").length;

                if(sizeOfList == 0){
                    console.log("sizeOfList " +sizeOfList);
                    $scope.showIcon = true;
                }

            }else{
                $scope.showIcon = false;
            }
        });
    }
});

它无法正常工作。如果值的长度为一或显示列表,它仍然显示图标。

最佳答案

您可以根据您的过滤数据直接显示您的按钮。

HTML 代码

<div ng-controller="foodCtrl">
    <form>
        <div class="form-group row foodGroupp" >
            <label for="inputFood" class="col-sm-2 col-form-label">food</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" id="inputFood" ng-model="inputFood" placeholder="Write some food"  ng-keyup="doCheck()">
            </div>
            <span id="addIcon" ng-hide="(foodName|filter:inputFood).length > 0">
                <button class="btn btn-default">+</button>
            </span>
            <ul ng-show="inputFood" id="foodList">
                <li ng-repeat="foodN in foodName | filter : inputFood">
                        <span>{{ foodN.name}}</span>
                </li>
            </ul>
        </div>


        <div class="form-group row">
            <div class="offset-sm-2 col-sm-10">
                <button type="submit" class="btn btn-primary">הוסף</button>
            </div>
        </div>
    </form>
 </div>

关于javascript - 当 AngularJS 列表中找不到输入值时如何显示元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42621340/

相关文章:

javascript - Node.js 中的 Ruby Rails .inject 等效项

javascript - 如何将 CSS 效果转换为 Javascript/jQuery

javascript - 在特定断点处隐藏 DataTables 列

html - 背景图像不会传遍全身

javascript - Ember : incrementProperty interaction with button and input

javascript - 如何使用 Node 通过 HTTPS 为 socket.io 提供服务?

jquery - 在哪里可以找到源函数定义?

javascript - 如何通过类获取跨度内的文本。 (for循环内部)

javascript - 为什么删除图标按钮在以下情况下没有附加 <select>?

javascript - 从导航后面滑出文本