Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.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 改进了这种角滤波器的结构_Javascript_Angularjs - Fatal编程技术网

Javascript 改进了这种角滤波器的结构

Javascript 改进了这种角滤波器的结构,javascript,angularjs,Javascript,Angularjs,我在复选框上创建了一个过滤机制来显示项目列表,这是根据一个关于葡萄酒的示例修改的。我想知道,在基本代码结构方面,我是否缺少一些东西,可以使这个解决方案更容易理解,即结构,尤其是在过滤器检查和DOM方面,以防我没有按预期的方式使用过滤器,或者我是否可以做些什么来消除代码行 您可以在更少的代码行中使用像underscope或lodash这样的东西来实现这一点。如果$scope.filter.hasOwnPropertycheckThisArray[i]键,则不需要使用line,因为如果$scope

我在复选框上创建了一个过滤机制来显示项目列表,这是根据一个关于葡萄酒的示例修改的。我想知道,在基本代码结构方面,我是否缺少一些东西,可以使这个解决方案更容易理解,即结构,尤其是在过滤器检查和DOM方面,以防我没有按预期的方式使用过滤器,或者我是否可以做些什么来消除代码行


您可以在更少的代码行中使用像underscope或lodash这样的东西来实现这一点。如果$scope.filter.hasOwnPropertycheckThisArray[i]键,则不需要使用line,因为如果$scope.filter没有checkThisArray[i]键,则下一行返回undefined。
<div ng-controller="myCtrl">
    <b>Category:</b>
    <div ng-repeat="cat in getCategories()">
        <b><input type="checkbox" ng-model="filter[cat]" /> {{cat}}</b>
    </div>
    <hr />
    Popularity
    <div ng-repeat="w in filtered=(wines | filter:filterByCategory)">
        {{w.name}} ({{w.categories}})
    </div>
    <hr />
    Number of results: {{filtered.length}}
</div>
$scope.filterByCategory = function (wine) {
      if (!$.isEmptyObject($scope.filter)) {
          var checkThisArray = wine.categories;
          for (var i = 0; i < checkThisArray.length; i++) {
              if ($scope.filter.hasOwnProperty(checkThisArray[i])) {
                  if($scope.filter[checkThisArray[i]]) {
                      return true;  
                  }
              }
          }
      }
      return noFilter($scope.filter);
};