当前位置: 首页 > 面试题库 >

Angular.js中的搜索过滤器,

沈宏朗
2023-03-14
问题内容

我是这个框架的新手,因此练习Angularjs并遵循网站上提供的教程。

有一个示例,我们可以搜索表中存在的数据,示例如下,

<!DOCTYPE html>
<html ng-app="SmartPhoneApp">
<head>
    <title>Smart phone Angular</title>      
    <script type="text/javascript" src="D:/Rahul Shivsharan/Installers/AngularJS/angular.js"></script>
    <script type="text/javascript">
        var smartPhoneApp = angular.module("SmartPhoneApp",[]);

        smartPhoneApp.controller("phoneCtrl",function($scope){
            $scope.phones = [
                {
                    "modelName" : "LUMIA 520",
                    "companyName" : "NOKIA"
                },
                {
                    "modelName" : "GALAXY S Series",
                    "companyName" : "SAMSUNG"
                },
                {
                    "modelName" : "CANVAS",
                    "companyName" : "MICROMAX"
                },
                {
                    "modelName" : "OPTIMUS",
                    "companyName" : "LG"                        
                }
            ];

        });
    </script>   
</head>
<body>  
    Search by Model Name : <input ng-model="comp.modelName" />  
    Search by Company : <input ng-model="comp.companyName" />   
    <div ng-controller="phoneCtrl">
        <table ng-repeat="phone in phones | filter: comp">
            <tr>
                <td>{{phone.modelName}}</td>
                <td>{{phone.companyName}}</td>
            </tr>
        </table>
    </div>
</body>
</html>

在上面的代码中,我可以使用两个不同的输入来搜索手机,即按型号名称搜索和按公司名称搜索,以上代码运行良好,

但是,如果我需要使用选择选项中存在的搜索类型进行搜索,该怎么办?

代码如下

<!DOCTYPE html>
<html ng-app="EmployeeApp">
<head>
    <title>Orderring People</title>     
    <script type="text/javascript" src="D:/Rahul Shivsharan/Installers/AngularJS/angular.js"></script>
    <script type="text/javascript">
        var employeeApp = angular.module("EmployeeApp",[]);
        employeeApp.controller("empCtrl",function($scope){
            $scope.employees = [
                {
                    "name" : "Mahesh Pachangane",
                    "company" : "Syntel India Pvt. Ltd",
                    "designation" : "Associate"
                },
                {
                    "name" : "Brijesh Shah",
                    "company" : "Britanica Software Ltd.",
                    "designation" : "Software Engineer"
                },
                {
                    "name" : "Amit Mayekar",
                    "company" : "Apex Solutions",
                    "designation" : "Human Resource"
                },
                {
                    "name" : "Ninad Parte",
                    "company" : "Man-made Solutions",
                    "designation" : "Senior Architect"
                },
                {
                    "name" : "Sunil Shrivastava",
                    "company" : "IBM",
                    "designation" : "Project Lead"
                },
                {
                    "name" : "Pranav Shastri",
                    "company" : "TCS",
                    "designation" : "Senior Software Engineer"
                },
                {
                    "name" : "Madan Naidu",
                    "company" : "KPMG",
                    "designation" : "Senior Associate"
                },
                {
                    "name" : "Amit Gangurde",
                    "company" : "Amazon",
                    "designation" : "Programe Manager"
                }   
            ];
            $scope.orderProp="name";                
        });
    </script>   
</head>
<body ng-controller="empCtrl">      
    <table>
        <tr>
            <td align="right">Search :</td>
            <td><input ng-model="query" /></td>
        </tr>           
        <tr>
            <td align="right">Search By :</td>
            <td>
                <select ng-model="query">
                    <option value="name">NAME</option>
                    <option value="company">COMPANY</option>
                    <option value="designation">DESIGNATION</option>
                </select>   
            </td>
        </tr>
    </table>
    <hr>
    <div>
        <table>
            <tr>
                <th>Employee Name</th>
                <th>Company Name</th>
                <th>Designation</th>
            </tr>
            <tr ng-repeat="emp in employees | filter:query">
                <td>{{emp.name}}</td>
                <td>{{emp.company}}</td>
                <td>{{emp.designation}}</td>
            </tr>
        </table>
    </div>
</body>

从上面的代码中,您可以看到我正在尝试通过选择框中显示的“姓名”,“公司”或“名称”搜索员工,

但是我在这里错了

NG-模型查询 没有拿起合适的映射,或可我在一个错误的方式做,

你能告诉我我将如何实现这一目标,

我应该更改代码的哪一部分


问题答案:

我已经创建了一个小矮人。您可以在搜索查询上定义属性以进行过滤。在选择中,选择要作为过滤依据的属性,并将其分配给搜索查询。

http://plnkr.co/edit/XklvXtc1AZpndjLvXrh8?p=预览



 类似资料:
  • 问题内容: 我正在尝试搜索数据库,并能够使用大写/小写过滤器术语,但是我注意到在应用分析器时,我不知道如何在过滤后的搜索中应用小写分析器。这是查询: 我有一个小写的类型: 以及相应的映射: 问题答案: 问题是您在索引期间分析了一个字段以使其小写,但您正在对未分析的查询使用术语过滤器: 术语过滤器 筛选具有包含术语(未分析)的字段的文档。与术语查询类似,不同之处在于它充当过滤器。 http://ww

  • 问题内容: 给定一个如果满足某些条件则返回true的filter方法,是否可以在HTML中调用其相反的方法,例如使用: 代替 ?还是您必须维护两种单独的过滤器方法(一种表示false,一种表示true)? 问题答案: 正如ENDOH所指出的,这个SO问题是重复的),您可以在前面加上“!”来否定过滤器 过滤器字符串,如下所示: 请注意,“!”被引用。该文件是不会在这个非常清楚,并举例会有帮助。

  • 我对Ruby、Selenium和UI自动化非常陌生,我有一个关于如何计算下拉菜单中可见项目数量的问题。 示例:我有一个包含10种货币值(美元、欧元、日元等)的下拉菜单。它们的编码为: 下拉菜单是可搜索的,如果我输入“USD”,那么唯一可见的项目将是该特定货币值。该类的所有其他 div 都得到一个属性。如何验证美元确实是菜单中的唯一项目?这种情况的一个例子可以在这里看到:https://www.oa

  • 问题内容: 每当我在应用程序中搜索时,都会显示正确的结果,但是当我点击搜索的单元格时,在执行搜索之前,它始终会播放表格的第一个索引。我试图在我的didselectcell中使用isSearching Bool,但似乎无法正常工作。 问题答案: 我认为问题在于您正在跟踪自己是否在搜索和操作源数据数组。 我有一个示例游乐场代码段,我已将其用于其他一些答案,该示例向您展示了如何更有效地执行此操作,并提供

  • 我只是想在youtube上搜索我自己的视频,在X日期后发布 然而,当我使用< code>publishAfter参数时,即使我将< code>type参数设置为< code>video,也会出现< code>invalidSearchFilter错误。 错误描述如下: 该请求包含无效的搜索过滤器和/或限制组合。请注意,如果您将或参数设置为,则必须将参数设置为,如果您为、、、、、、、、或参数设置值,

  • 我阅读了一些关于查询上下文和过滤上下文的文章和文档,了解到如果你不需要进行全文搜索或评分,最好使用过滤上下文。就我而言,我想返回包含ID的日志……所以我意识到我应该只使用过滤上下文而不是查询上下文。除了全文搜索或评分之外,是否有一条硬基线来定义何时应该使用其中一个? 所以我从我最初的DSL查询搜索cmd: 到过滤器上下文: 因为,我想使用NEST来执行我采用这种方法的查询搜索。 这是使用NEST进