Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.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
AngularJS当我点击一个链接时,我想过滤一个数组_Angularjs - Fatal编程技术网

AngularJS当我点击一个链接时,我想过滤一个数组

AngularJS当我点击一个链接时,我想过滤一个数组,angularjs,Angularjs,我目前正在与一个使用PHP和AngularJS的网站合作,我有一个产品列表和一个具有一些链接的下拉列表,允许用户按类型(电吉他、声学吉他等)过滤产品。是否有任何方法可以过滤ng repeat以仅显示所选类型的产品 这就是我目前拥有的: <article class="producto" ng-repeat="product in dbproducts | filter:prodsearch"> <div class="img"> <img s

我目前正在与一个使用PHP和AngularJS的网站合作,我有一个产品列表和一个具有一些链接的下拉列表,允许用户按类型(电吉他、声学吉他等)过滤产品。是否有任何方法可以过滤ng repeat以仅显示所选类型的产品

这就是我目前拥有的:

<article class="producto" ng-repeat="product in dbproducts | filter:prodsearch">
    <div class="img">
        <img src="products/img/{{product.Imagen}}" alt="{{product.Marca + ' ' + product.Modelo}}">
        <p class="product-model">{{product.Marca + ' ' + product.Modelo}}</p>
        <span class="product-price">{{product.Precio | currency: '€'}}</span>
    </div>
    <div class="check">
        <div class="paygroup">
            <p class="price" ng-bind="product.Precio | currency: '€'"></p>
            <button class="buy"><i class="fa fa-shopping-cart"></i>{{'BUTTON_BUY' | translate}}</button>
            <p>{{'BUTTON_AVAILABLE' |translate}}: {{product.Unidades_disponibles}} </p>
        </div>
    </div>
    <div class="txt">
        <p>Test, hola,  {{ $index }}</p>
    </div>
    <span class="close fa fa-times fa-inverse"></span>
</article>

{{product.Marca+''+product.Modelo}

{{product.Precio |货币:'€'}

{{'BUTTON_BUY'{124; translate}} {{'BUTTON_AVAILABLE'| translate}:{{{product.Unidades_disponsibles}}

Test,hola,{{$index}


因此,如果我没有弄错您的代码,您的ng中已经有一个管道过滤器。请重复:

|过滤器:prodsearch

因此,我猜在直接输入或控制器中的某个地方,您将用户输入绑定到变量“prodsearch”,并且ng repeat是实时过滤的


同样,您也可以使用按钮,无论它们是否在液滴列表中,单击操作都会将特定文本指定给“prodsearch”变量。

a
filter
就是您想要的。另一种方法是使用产品的副本数组来显示和编写更新产品数组的函数。此函数接收一个类型,只需将相关产品添加到显示项

大概是这样的:

控制器

在下拉列表的
ng change
上调用此函数

$scope.filters = ["all", "electric", "guitars", "acoustic", "guitars"];
$scope.selectedFilter = "all";

$scope.filterProds() {
  if ($scope.selectedFilter == "all") {
    $scope.dbproductsToShow = $scope.dbproducts;
  } else {
    $scope.dbproductsToShow = [];
    $scope.dbproducts.forEach(function(itm) {
      if (itm['type'] == filter) {
        $scope.dbproductsToShow.push(itm);
      }
    });
  }
}
在您的Html中

 <select ng-model="selectedFilter" ng-options="filter in filters" ng-change="filterProds()"></select>

 <article class="producto" ng-repeat="product in dbproductsToShow">

我已经修复了它,我所做的是:

  • 在ng repeat中添加另一个名为filter:producttype的管道
  • 添加了$scope.producttypevariable
  • 每次单击下拉列表中的链接时,都会更改变量的值,以便按类型进行筛选。这:

  • 吉他电子琴

感谢您的帮助和提示,如果这个方法不是最好的,我很抱歉,我自己学习了angularjs(我不是一个很好的自学者)。

prodsearch是按产品名称搜索(在我的导航栏上的搜索输入中),当我点击导航栏下拉菜单上的链接时,我想按类型过滤产品。那么ng show呢=“product.type==变量_,其中选择了_类型”??