Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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
Javascript 角度过滤器在1.3版中过滤不正确,在1.5版中是否更好?_Javascript_Angularjs_Angularjs Directive_Angularjs Ng Repeat_Angular Filters - Fatal编程技术网

Javascript 角度过滤器在1.3版中过滤不正确,在1.5版中是否更好?

Javascript 角度过滤器在1.3版中过滤不正确,在1.5版中是否更好?,javascript,angularjs,angularjs-directive,angularjs-ng-repeat,angular-filters,Javascript,Angularjs,Angularjs Directive,Angularjs Ng Repeat,Angular Filters,我目前正在使用控制器中的内置角度过滤器“$filter”来过滤数据下拉列表,但该过滤器根本无法正确过滤数据。它会对其进行过滤,但过滤后的数据与正在键入的文本不匹配。我读到,在1.3中,在对象和数组上,过滤器的状态可能会出现一些问题?我想知道这是一个版本问题还是我在代码中做了一些不正确的事情?我正在考虑升级到1.5,所以我只是好奇我的问题是否能在1.5中得到解决,或者我是否有语法错误。以下是我所拥有的: 数据(这是正在重复的初始数据以及正在过滤的内容: this.items = [

我目前正在使用控制器中的内置角度过滤器“$filter”来过滤数据下拉列表,但该过滤器根本无法正确过滤数据。它会对其进行过滤,但过滤后的数据与正在键入的文本不匹配。我读到,在1.3中,在对象和数组上,过滤器的状态可能会出现一些问题?我想知道这是一个版本问题还是我在代码中做了一些不正确的事情?我正在考虑升级到1.5,所以我只是好奇我的问题是否能在1.5中得到解决,或者我是否有语法错误。以下是我所拥有的:

数据(这是正在重复的初始数据以及正在过滤的内容:

this.items = [
            { name: 'Jim', city: 'Minneapolis', state: 'MN', zip: 44332 },
            { name: 'Boe', city: 'Scottsdale', state: 'AZ', zip: 44332 },
            { name: 'Tom', city: 'S.F.', state: 'CA', zip: 11223 },
            { name: 'Joe', city: 'Dallas', state: 'TX', zip: 34543 },
            { name: 'Jon', city: 'L.A.', state: 'CA', zip: 56433 },
        ];
 <li>Jim</li>
 <li>Boe</li>
 <li>Tom</li>
 <li>Joe</li>
 <li>Jon</li>
模板:

  <input type="text" class="form-control" name="inputField" ng-change="ctrl.filterTextChangeLocal($event)" ng-model="ctrl.ngModelValue" ng-click="ctrl.openDropdown($event)" />
上面的结果是一个简单的引导ul下拉列表,该列表将在列表中的对象上显示指定的属性,这里它将显示上面显示的数据中的name属性,但未正确过滤此数据:

this.items = [
            { name: 'Jim', city: 'Minneapolis', state: 'MN', zip: 44332 },
            { name: 'Boe', city: 'Scottsdale', state: 'AZ', zip: 44332 },
            { name: 'Tom', city: 'S.F.', state: 'CA', zip: 11223 },
            { name: 'Joe', city: 'Dallas', state: 'TX', zip: 34543 },
            { name: 'Jon', city: 'L.A.', state: 'CA', zip: 56433 },
        ];
 <li>Jim</li>
 <li>Boe</li>
 <li>Tom</li>
 <li>Joe</li>
 <li>Jon</li>
吉姆
  • 英格兰银行
  • 汤姆
  • 乔恩

  • 感谢

    角度过滤器工作完美,问题可能出在您的实现中……以下是您的工作示例:

    编辑:如果要根据
    属性
    、名称筛选数组,则需要在items | filter:{key:value}中指示筛选
    项。
    这是一个参考:

    函数TestCtrl($scope,data){
    var vm=$scope;
    vm.items=数据;
    vm.query='';
    }
    有棱角的
    .module('测试',[]))
    .value('数据'[
    {姓名:'Jim',城市:'Minneapolis',州:'MN',邮编:44332},
    {名称:'Boe',城市:'Scottsdale',州:'AZ',邮编:44332},
    {姓名:'Tom',城市:'S.F.,州:'CA',邮编:11223},
    {姓名:'Joe',城市:'Dallas',州:'TX',邮编:34543},
    {姓名:'Jon',城市:'L.A.,州:'CA',邮编:56433},
    ])
    .controller('TestCtrl',['$scope','data',TestCtrl])
    ;
    @import”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css";
    .表格组{
    垫面:1米;
    垫底:1.5em;
    }
    
    
    - 
    - 
    


    角度过滤器工作正常,问题可能出在您的实现中……以下是您的工作示例:

    编辑:如果要根据
    属性
    、名称筛选数组,则需要在items | filter:{key:value}
    中指示筛选
    项。
    这是一个参考:

    函数TestCtrl($scope,data){
    var vm=$scope;
    vm.items=数据;
    vm.query='';
    }
    有棱角的
    .module('测试',[]))
    .value('数据'[
    {姓名:'Jim',城市:'Minneapolis',州:'MN',邮编:44332},
    {名称:'Boe',城市:'Scottsdale',州:'AZ',邮编:44332},
    {姓名:'Tom',城市:'S.F.,州:'CA',邮编:11223},
    {姓名:'Joe',城市:'Dallas',州:'TX',邮编:34543},
    {姓名:'Jon',城市:'L.A.,州:'CA',邮编:56433},
    ])
    .controller('TestCtrl',['$scope','data',TestCtrl])
    ;
    @import”https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css";
    .表格组{
    垫面:1米;
    垫底:1.5em;
    }
    
    
    - 
    - 
    


    您应该将过滤器更改为-

    public filterTextChangeLocal($event: ng.IAngularEvent) {
              this.filteredItems = this.$filter("filter")(this.items, {'name':this.ngModelValue});
    
        }
    

    您应该按如下方式更改过滤器-

    public filterTextChangeLocal($event: ng.IAngularEvent) {
              this.filteredItems = this.$filter("filter")(this.items, {'name':this.ngModelValue});
    
        }
    

    这似乎也没有正确过滤。如果我在输入中按“a”,我只会得到带有“a”的名称在它们中,在这种情况下是没有的,因为它会过滤模型的每个属性。
    a
    字符出现在其他字段中,而不仅仅出现在
    name
    中。看看我上次的编辑。是的,好的,这是我意识到的。我有过滤整个对象的功能,但更多的是停留在单个属性上玩过了。不过我已经猜到了这一部分。非常感谢您的时间。还有一个问题:如何使筛选器动态化,以便用户可以根据对象中显示的属性进行筛选,例如,如果用户传入项display property=“city”然后,下拉列表将显示我帖子中对象中的所有城市。如果它们以“状态”传递,它将过滤状态。但是组件的用户指定要传递的数据,因此它们可能具有一个名为“地址”的属性如果他们传入,我需要将筛选器传递给fitler以获取地址。这适用于静态筛选:This.filteredItems=This.$filter(“筛选器”)(This.items,{name:This.ngModelValue});但是当我尝试通过这样做使其动态化时:This.filteredItems=This.$filter(“筛选器”)(This.items,{This.itemsDisplayProperty:This.ngModelValue});它不会运行,因为我不能在同一个对象中两次使用“this”,而该对象似乎也没有正确过滤..如果我在输入中按“a”,我应该只能得到带有“a”的名称在它们中,在这种情况下是没有的,因为它会过滤模型的每个属性。
    a
    字符出现在其他字段中,而不仅仅出现在
    name
    中。看看我上次的编辑。是的,好的,这是我意识到的。我有过滤整个对象的功能,但更多的是停留在单个属性上玩过了。不过我已经猜到了这一部分。非常感谢您的时间。还有一个问题:如何使筛选器动态化,以便用户可以根据对象中显示的属性进行筛选,例如,如果用户传入项display property=“city”然后,下拉列表将显示我帖子中对象中的所有城市。如果它们以“状态”传递,它将过滤状态。但是组件的用户指定要传递的数据,因此它们可能具有一个名为“地址”的属性如果他们传入,我需要将筛选器传递给fitler以获取地址。这适用于静态筛选:This.filteredItems=This.$filter(“filter”)(This.items,{name:This.ngModelValue});但是当我