为什么angularjs过滤器的命名过滤器不适用于第一个元素?

问题描述 投票:0回答:1

我是角色的新人。我在列表中添加了一个过滤器,以尝试仅显示与我的过滤器文本匹配的值。它工作正常,除了第一个todo.title。

如果我有todos:e,f,g,gf:打字e没有改变任何东西,但输入f将显示f和gf。对于我列表中的第一个待办事项,这总是看起来像这样。

你知道为什么吗?

在我的HTML中:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>

<form id="todo-form" ng-submit="addTodo()">
    <input id="new-todo" placeholder="Que devez-vous faire ?" ng-model="newTodo" />
    <button class="btn btn-info" ng-click="addTodo()">Ajouter la tâche</button>
</form>
<article ng-show="todos.length">
    <p><strong><u>Les tâches en cours</u> :</strong></p>
    <p><strong><u>Recherche</u> : </strong><input type="text" ng-model="test"></p>
    <ul id="todo-list">
        <li ng-repeat="todo in todos  | filter : test | orderBy:'title'" ng-class="{completed: todo.completed}">
            <div class="view">
                <span>{{todo.title}}</span>
                <span class="close" ng-click="removeTodo(todo)">x</span>
            </div>
        </li>
    </ul>
</article>

当我在输入中输入时,c,d等必须消失。但不是在这里。

angularjs filter angular-filters
1个回答
0
投票

我相信过滤器会在你要做的所有属性中搜索字符串。例如,如果您尝试按标题过滤,则应使用类似的内容

<li ng-repeat="todo in todos  | filter:{title: test || ''} | orderBy:'title'" ng-class="{completed: todo.completed}">

如果您没有将|| ''添加到过滤器,则加载页面时todos将不会显示。希望它有所帮助,欢呼。

过滤器的文档:https://docs.angularjs.org/api/ng/filter/filter

© www.soinside.com 2019 - 2024. All rights reserved.