javascript - AngularJS 在 orderBy 上动态指定标志

标签 javascript angularjs

我正在尝试根据所选的选择框值在 AngularJS 中执行 orderBy 操作。

我遇到的问题是根据所选值更改可选的 :true:false 标志。

例如,“字母顺序”,该标志必须为 :false,但对于“日期”(最近),该标志必须为 :true >.

我已经尝试对范围选项中的标志进行硬编码,但仍然不起作用。

html

<div>
  <label>Country filter</label>
  <input type="text" ng-model="countryFilter" />

  <label>Order by</label>
  <select ng-model="selectedOrder" ng-options="option for option in options"></select>
</div>

<ul>
  <li ng-repeat="detail in details | filter:{country: countryFilter} | orderBy:selectedOrder">{{ detail }}</li>    
</ul>

app.js

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

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

  // order by options
  $scope.options = ['country', 'address', 'date'];

  // all countries
  $scope.details = [{
    id:1, country:'Finland', address:'Mainstreet 2', date:'2015-05-02'
  },{
    id:2, country:'Mexico', address:'Some address', date:'2015-05-05'
  },{
    id:3, country:'Canada', address:'Snowroad 45', date:'2015-03-02'
  }];
});

这是一个plunker .

最佳答案

我建议将您的订单选项从字符串更改为对象,其中包括是否应为此订单反转列表的信息:

$scope.options = [{value : 'country', reversed : false}, {value : 'address', reversed : false}, {value : 'date', reversed : true}];

并且 ng-repeat 为:

<li ng-repeat="detail in details | filter:{country: countryFilter} | orderBy:selectedOrder.value:selectedOrder.reversed">{{ detail }}</li>    

http://plnkr.co/edit/JXtHa2jXUy7Y5BsvsdL9?p=preview

关于javascript - AngularJS 在 orderBy 上动态指定标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30362158/

相关文章:

javascript - 将字符串拆分为所需的格式并从中创建一个数组

javascript - 在 Windows 应用商店应用程序安装文件夹内的特定位置创建文件

javascript - 使用 ng-click 和 ng-repeat 动态创建过滤器

javascript - HTTP 获取 Angular 1.5 组件

javascript - 有没有办法限制 ng-repeat 中重复项目的数量?

javascript - 如何每秒添加一个数字,以便稍后显示或使用它们?

arrays - Angular通过Id从数组中获取对象

javascript - AngularJS中变量的动态名称

angularjs - AngularJS-从字符串中获取$ scope变量

javascript - Angular ui-router加载 View 两次