【问题标题】:Filter Array based on the selection of another array根据另一个数组的选择过滤数组
【发布时间】:2014-05-12 11:29:21
【问题描述】:

我有两个数组,一个包含最低价格,另一个包含最高价格,如果用户从最低价格下拉列表中选择“8000”的最低价格,我只想显示Max-Price 下拉菜单中大于“8000”的值。

如何使用 Angular.js 来解决这个问题?

这是一个 JSFiddle ...http://jsfiddle.net/sheko_elanteko/fxkSz/10/

<div ng-app="app">
<div ng-controller="MainController">
    <form action="#">
        <label>Min Price</label>
        <select name="min-price">
            <option ng-repeat="num in minPrice" value="{{ num }}">{{ num }}</option>
        </select>

        <br>

        <label>Max Price</label>
        <select name="max-price">
            <option ng-repeat="num in maxPrice" value="{{ num }}">{{ num }}</option>
        </select>
    </form>
</div>

还有 js ...

var app = angular.module('app', []);

app.controller('MainController', function($scope){

$scope.minPrice = [200, 400, 600, 800, 1000];
$scope.maxPrice = [200, 400, 600, 800, 1000];

});

【问题讨论】:

  • 我将首先在jsFiddle 上创建一些测试数据和测试代码,以便您在有特定问题时可以四处玩耍并参考。
  • 我刚开始学习 Angular,但我似乎还没有完全理解它。所以,我不知道如何解决这个问题。
  • 好的,但是您可以创建测试数据和 HTML 下拉列表以及任何所需的 CSS,您知道吗?并添加 Angular 库并进行尝试,全部在 jsFiddle 上。
  • 我做了一个小提琴并编辑了帖子。

标签: javascript arrays angularjs filter angularjs-ng-repeat


【解决方案1】:

我制作了 this fiddle 来解决您的问题。 ngRepeat & $scope 的使用非常简单,仅此而已。

按照建议添加代码

JS部分是;

var app = angular.module('App', [])

.controller('MainCtrl', ['$scope', function ($scope) {
    $scope.mins = [100, 200, 300, 400];
    $scope.maxs = [200, 300, 400, 500];

    $scope.getMxRange = function () {
        var arr = [];
        if ($scope.minVal) {
            angular.forEach($scope.maxs, function (maxVal) {
                if ($scope.minVal < maxVal) {
                    this.push(maxVal);
                }
            }, arr);
        }
        else {
            arr = $scope.maxs;
        }
        return arr;
    };
}]);

当然,HTML 看起来像这样;

<div ng-app="App" ng-controller="MainCtrl">
    <select ng-model="minVal">
        <option ng-repeat="min in mins" value="{{min}}">{{min}}</option>
    </select>
    <select>
        <option ng-repeat="max in getMxRange()" value="{{max}}">{{max}}</option>
    </select>
</div>

我相信代码很容易解释。 ngModel minVal 包含选定的最小值。而getMxRange 方法返回maxs 中大于最小值范围内所选选项的值的所有值。

【讨论】:

  • 请不要依赖链接。在您的答案中发布代码,并解释其工作原理。
猜你喜欢
  • 1970-01-01
  • 2020-04-30
  • 2014-05-03
  • 2022-08-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多