如何获得一个objFilter来处理Angular中的整数

时间:2014-11-02 08:46:02

标签: angularjs angularjs-ng-repeat angular-ngmodel

我已经看了一段时间了。 stukennedy对angularjs filter (not working)的回答帮助我完成了许多工作。 现在我在尝试获得更多功能时遇到了问题。 我试图过滤以整数形式出现的数据,但过滤器不起作用,我假设因为HTML值给出一个字符串而且不一样。

<select ng-model="objects.level">
            <option value="">All</option>
            <option value="1">1</option>
            <option value="2">2</option>
            <option value="3">3</option>
            <option value="4">4</option>
            <option value="5">5</option>
            <option value="6">6</option>
            <option value="7">7</option>
            <option value="8">8</option>
            <option value="9">9</option>
            <option value="10">10</option>
        </select>

继续我的数据:

<ul class="items">
            <li ng-repeat="item in items | objFilter:objects" >
            </li>
        </ul>

和objFilter

app.filter('objFilter', function() {
  return function(items, filter) {
      if (!filter){
          return items;
      }  
      var result = {};
        angular.forEach( filter, function(filterVal, filterKey) {
          angular.forEach(items, function(item, key) {
              var fieldVal = item[filterKey];
              if (fieldVal && fieldVal.toLowerCase().indexOf(filterVal.toLowerCase()) > -1){
                  result[key] = item;
              }
          });
        });
        return result;
    };
});

由于数据来自API,我无法控制我收到的数据。我在相同列表的其他地方使用objFilter来获取字符串值而没有问题。有谁能指出我正确的方向?

1 个答案:

答案 0 :(得分:1)

如果不了解&#34;对象&#34;理解问题是什么真的很棒。对象,以及&#34;项目的一些数据&#34;对象。
也就是说,我已经使用了自定义过滤器的一些端口Here作为示例{{3}},但是在&#34; Select&#34;组件是过滤&#34;级别&#34;项目的属性。
基本上,自定义过滤器正在迭代&#34;对象&#34;值并过滤回答过滤器任何属性的项目中的所有值。
因此,如果您在组件上选择1,则此属性的值为&#34; level&#34;:

<select ng-model="objects.level">

最终值只会选择第一项:

{name:"bla", level:1}

因为它的等级与对象的值相同。

看看这个例子,我相信它会帮助你更好地理解它。 祝你好运!