首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >动态设置搜索模式

动态设置搜索模式
EN

Stack Overflow用户
提问于 2013-07-12 22:46:26
回答 2查看 245关注 0票数 0

我是angularjs的新手,所以要有耐心^我正在尝试angularjs。如何以动态方式设置搜索模式?我尝试过这段代码,但没有成功:(

代码语言:javascript
复制
<html>
    <head>
        <meta charset="utf-8">
        <title>Binding</title>
    </head>
    <body>
        <div data-ng-app="myApp">
            <input type="text" data-ng-model="{{mysearch}}" />
            <select data-ng-model="mysearch">
                <option value="search.$">All</option>
                <option value="search.name">Name</option>
                <option value="search.email">Email</option>
            </select>
            <span>{{mysearch}}</span>
            <div data-ng-controller="MyCtrl">  
                <table>
                    <tr data-ng-repeat="actor in rows.cast | filter:search">
                        <td>{{actor.name}}</td>
                        <td>{{actor.email}}</td>
                    </tr>
                </table>
            </div>
        </div>

    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
    <script>
       var myAppModule = angular.module('myApp',[]);
       myAppModule.factory('Avengers',function(){
           var Avengers = {};
           Avengers.cast = [{name:'joe',email:'joe@mysite.com'},{name:'david',email:'david@mysite.com'},{name:'charles',email:'charles3@mysite.com'}]
           return Avengers;
       });
       function MyCtrl($scope,Avengers){
          $scope.rows = Avengers;
       } 

    </script>
    </body>
</html>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-11 00:55:31

我解决了这个问题:)

代码语言:javascript
复制
<!DOCTYPE html>
<html>
<head>
<title>AngularJS Tutorials</title>
<link rel="stylesheet" href="//cdn.jsdelivr.net/foundation/4.3.1/css/foundation.min.css">
</head>
<body>
    <div ng-app="myApp">
        <div ng-controller="AvengersCtrl">
            <select ng-model="mysearch" ng-change="change()">
            <option value="$">All</option>
            <option value="name">Name</option>
            <option value="character">Character</option>
        </select>
            <input type="text" ng-model="search[filter]">
            <table>
                <tr ng-repeat="actor in avengers.cast | filter:search">
                    <td>{{ actor.name }}</td>
                    <td>{{ actor.character }}</td>
                </tr>
            </table>
        </div>
    </div>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script>
<script>
    var myApp = angular.module('myApp', []);
    myApp.factory('Avengers', function () {
        var Avengers = {};
        Avengers.cast = [
            {name: 'Fabio',character: 'superman'},
            {name: 'whisher',character: 'spiderman'}
        ];
        return Avengers;
    });
    function AvengersCtrl($scope, Avengers) {
        $scope.filter = "name";
        $scope.search = {name:'', character:'', $:''};
        $scope.avengers = Avengers;
        $scope.change = function(){
            $scope.filter = $scope.mysearch;
        }
    }
</script>
</body>
</html>

非常感谢@lopisan angularjs: change filter options dynamically

票数 0
EN

Stack Overflow用户

发布于 2013-07-12 22:51:12

文档是这样写的:

http://docs.angularjs.org/api/ng.filter:filter

参数数组-{数组}-源数组。expression - {string|Object|function()} -用于从数组中选择项的谓词。可以是: string: Predicate之一,它使用表达式字符串的值产生子字符串匹配。将返回包含该字符串的所有字符串或数组中具有字符串属性的对象。谓词可以通过在字符串前加上!前缀来否定。

Object: pattern对象可用于过滤数组包含的对象的特定属性。例如,{ name : "M“,phone: "1”}谓词将返回属性名称包含“M”和属性phone包含“1”的项的数组。可以使用一个特殊的属性名$(如{$:"text"})来接受与对象的任何属性的匹配。这等同于上面描述的简单的子字符串与字符串的匹配。

函数:谓词函数可以用来编写任意的过滤器。对数组的每个元素都调用该函数。最终结果是谓词为其返回true的那些元素的数组。

您可能需要两个输入字段,一个用于姓名,另一个用于电子邮件,然后将一个对象传递给与数据模型、姓名和电子邮件中的字段相对应的过滤器。

您也可以编写自定义过滤器,它们实际上非常简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17617664

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档