Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List Angularjs过滤器无序列表_List_Angularjs_Static_Filter_Listitem - Fatal编程技术网

List Angularjs过滤器无序列表

List Angularjs过滤器无序列表,list,angularjs,static,filter,listitem,List,Angularjs,Static,Filter,Listitem,我正在尝试筛选静态无序列表中的字符串。我能够过滤数组中的项目,但不确定如何对静态html内容进行过滤 我学习使用数组实现它的方法是使用以下方法: <input type="search" ng-model="name" /> <ul> <li ng-repeat="person in people | filter:name"> {{ person }} </li> </ul> 我试图用现有的方法达到同样的效

我正在尝试筛选静态无序列表中的字符串。我能够过滤数组中的项目,但不确定如何对静态html内容进行过滤

我学习使用数组实现它的方法是使用以下方法:

<input type="search" ng-model="name" />

<ul>
    <li ng-repeat="person in people | filter:name">
    {{ person }}
    </li>
</ul>
我试图用现有的方法达到同样的效果

我希望能够根据列表项中的文本字符串筛选列表项,因此,例如,在文本框中键入“L”只会显示:

丽莎 刘易斯
这里有一个破解的方法

它的关键在于ng change=filter。每次输入字母时,您都可以决定显示或隐藏哪些元素

$scope.filter = function() {
    var elem = document.getElementById('list');
    for (var i = 0; i < elem.children.length; i++) {
        var name = elem.children[i].children[0].innerHTML;
        if (name.indexOf($scope.name) != -1 || $scope.name == "") {
              elem.children[i].style.display = "block";
        } else {
            elem.children[i].style.display = "none";
        }
    }
}

正如我所说,这是一个丑陋的黑客,但它的工作。你最好用自己的名字制作一个对象,并使用ng repeat。

这里有一个黑客破解的方法

它的关键在于ng change=filter。每次输入字母时,您都可以决定显示或隐藏哪些元素

$scope.filter = function() {
    var elem = document.getElementById('list');
    for (var i = 0; i < elem.children.length; i++) {
        var name = elem.children[i].children[0].innerHTML;
        if (name.indexOf($scope.name) != -1 || $scope.name == "") {
              elem.children[i].style.display = "block";
        } else {
            elem.children[i].style.display = "none";
        }
    }
}

正如我所说,这是一个丑陋的黑客,但它的工作。您最好用自己的名字创建一个对象,并使用ng repeat。

如果元素不是使用ng repeat动态创建的,则无法使用angular轻松过滤它们。你可以使用jQuery或直接的javascript来实现它。如果元素不是用ng repeat动态创建的,你就不能用angular轻松过滤它们。您可以使用jQuery或直接的javascript来实现它。这是一个令人印象深刻的黑客行为,并且可能演示了Angular对于这项工作来说可能是多么错误的工具。我同意你的观点,名称应该是对象。不幸的是,这不是我正在处理的项目的一个选项,需要进行大规模检修。对于这种情况,最好使用您以前的建议并使用jQuery。谢谢你的帮助。哪个angularjs版本?这是一个令人印象深刻的黑客,可能说明angularjs对于这里的工作来说可能是一个错误的工具。我同意你的观点,名称应该是对象。不幸的是,这不是我正在处理的项目的一个选项,需要进行大规模检修。对于这种情况,最好使用您以前的建议并使用jQuery。谢谢你的帮助。哪个angularjs版本?