javascript - 如何在 ng-repeat 中通过 ng-model 创建过滤器

标签 javascript angularjs angularjs-ng-repeat angularjs-ng-model

我有这个代码

    <div class="form-group">
      <label for="inputFood" class="col-sm-2 col-form-label">Component</label>
      <br>
      <div class="col-sm-9 col-xs-9">
        <input type="text" class="form-control" name="inputFood{{ $index + 1}}" id="inputFood{{$index+1}}" required ng-model="foodForm.inputFood[$index+1]" placeholder="Type a component" autocomplete="off" ng-keyup="doCheck($index+1)">
      </div>

    </div>
    <br>
    <div class="form-group col-xs-12">
      <ul ng-show="showListFood" class="foodList{{$index+1}}">
        <li ng-click="showFood(foodN.food_name, foodN.food_id)" ng-repeat="foodN in foodName| filter : foodForm.inputFood.$index+1">
          <span>{{ foodN.food_name}}</span>
        </li>
      </ul>
    </div>
  </fieldset>

我正在尝试通过 ng-repeat 中的 ng-model 过滤列表,但遗憾的是我没有成功。我将非常感谢您的帮助。

这是示例 jsFiddle

最佳答案

试试这个

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

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

        $scope.foodName = [];
        $scope.foodForm = [];
        $scope.foodsComponent = [{
            id: 'comp1',
            inputFood: ''
        }];


        $scope.foodName = [{
            "food_name": "egg"
        }, {
            "food_name": "bread"
        }, {
            "food_name": "apple"
        }];


        $scope.showListFood = true;
        $scope.isFood = false;

        $scope.doCheck = function(index) {

            $(function() {

                if ($scope.foodForm.inputFood.index != "" &&        $scope.foodForm.inputFood.index != undefined) {

                    $scope.showListFood = true;

                } else {

                    $scope.showListFood = false;
                    $scope.isFood = false;
                }

            });
        };


        $scope.addComponent = function() {

            var newItemNo1 = $scope.foodsComponent.length + 1;
            $scope.foodsComponent.push({
                id: 'comp' + newItemNo1,
                inputFood: ''
            });

        };
    });

</script>

        <button class="btn btn-primary" ng-click="addComponent()">ADD</button>
        <div class="spacer"></div>


        <div ng-repeat="comp in foodsComponent">
            <fieldset>

                <div class="form-group">
                    <label for="inputFood" class="col-sm-2 col-form-label">Component</label>
                    <br>
                    <div class="col-sm-9 col-xs-9">
                        <input type="text" class="form-control" name="inputFood{{ $index + 1}}" id="inputFood{{$index+1}}" required ng-model="foodForm.inputFood[$index+1]" placeholder="Type a component" autocomplete="off" ng-keyup="doCheck($index+1)">
                    </div> 
                </div>
                <br>
                <div class="form-group col-xs-12">
                    <ul ng-show="showListFood" class="foodList{{$index+1}}">
                        <li ng-click="showFood(foodN.food_name, foodN.food_id)" ng-repeat="foodN in foodName| filter : foodForm.inputFood[$index+1]">
                            <span>{{ foodN.food_name}}</span>
                        </li>
                    </ul>
                </div>
            </fieldset>
        </div>
    </div>

</div>

关于javascript - 如何在 ng-repeat 中通过 ng-model 创建过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43038602/

相关文章:

javascript - AngularJS 自定义 $http 服务,具有自动重试功能

javascript - 如何根据浏览器的resiging自动沿div宽度调整div高度

javascript - 我们如何自定义内置的 Angular "currency"过滤器?

javascript - 如何在 AngularJS 中正确使用自定义服务

javascript - AngularJs 使用来自自定义 Json 的 ng-repeat 创建表

javascript - 以 Angular 保存对象数组

javascript - ng-repeat 数据仅在文本框焦点更改后更新

javascript - 如何使用PHP强制下载文件?

javascript - Canvas - 填充线条下方或上方的区域

javascript - Angularjs 在 ng-repeat 中检查商品库存消息,在右侧商品索引中显示消息