Как передать выбранное выпадающее значение в ng-repeat orderby

0

Я создал нормальный раскрывающийся список. В этом случае мне нужно передать выбранное значение в ng-repeat orderby для фильтрации.

Это мое выпадающее меню

<select   name='filter_range' id='filter_range'   onchange='filter()'>
    <option value='mrplow'> MRP Low To High</option>
    <option value='mrphigh'> MRP High To Low </option>
    <option value='qtyhigh'> Qty Low To High </option>
    <option value='qtylow'> Qty High To Low </option>
</select>

Угловые js

<div  ng-app="myApp" ng-controller="MyController"> 
    <div  ng-repeat = "grp_val in sample | orderBy:'mrplow'"
        <label>{{grp_val.product}}</label><br>
    </div>
</div>

Теперь, как я могу передать это выбранное значение в ng-repeat orderBy: ''?

Теги:

2 ответа

2
Лучший ответ

Я делаю пример, который аналогичен вашей проблеме:

    angular.module('orderByExample', [])
      .controller('ExampleController', ['$scope',
        function($scope) {
          $scope.friends = [{
            name: 'John',
            phone: '555-1212',
            age: 10
          }, {
            name: 'Mary',
            phone: '555-9876',
            age: 19
          }, {
            name: 'Mike',
            phone: '555-4321',
            age: 21
          }, {
            name: 'Adam',
            phone: '555-5678',
            age: 35
          }, {
            name: 'Julie',
            phone: '555-8765',
            age: 29
          }];
          $scope.predicates = ['name', 'phone', 'age'];
          $scope.predicate = 'name';
        }
      ]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="orderByExample" ng-controller="ExampleController">
  <select ng-model="predicate" ng-options="p as p for p in predicates"></select>
  <table class="friend">
    <tr>
      <th>Name</th>
      <th>Phone Number</th>
      <th>Age</th>
    </tr>
    <tr ng-repeat="friend in friends | orderBy:predicate">
      <td>{{friend.name}}</td>
      <td>{{friend.phone}}</td>
      <td>{{friend.age}}</td>
    </tr>
  </table>
</div>

См. Здесь: https://docs.angularjs.org/api/ng/filter/orderBy

Надеюсь, это поможет.

0

Учитывая, что ваши данные образца имеют свойства "mrp" и "qty", следующее должно решить вашу проблему

<select ng-model='orderProp' name='filter_range' id='filter_range'   onchange='filter()'>
    <option value='mrp'> MRP Low To High</option>
    <option value='-mrp'> MRP High To Low </option>
    <option value='qty'> Qty Low To High </option>
    <option value='-qty'> Qty High To Low </option>
</select>

<div ng-app="myApp" ng-controller="MyController"> 
    <div  ng-repeat = "grp_val in sample | orderBy: orderProp"
        <label>{{grp_val.product}}</label><br>
    </div>
</div>

Вам нужно установить значения параметров вашего окна выбора в соответствии с вашими свойствами объекта "образец", а затем привязать значение вашего окна выбора к "orderProp", которое вы в свою очередь свяжете с вашей директивой ng-repeat, используя фильтр orderBy.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню