【问题标题】:How to sort array in ng-options by key?如何按键对ng-options中的数组进行排序?
【发布时间】:2015-06-03 13:08:27
【问题描述】:

有这样的数组:

month: Array[13]0: "M"1: "January"2: "February"3: "March"4: "April"5: "May"6: "June"7: "July"8: "August"9: "September"10: "October"11: "November"12: "December"

我愿意:

ng-options="key as value for (key, value) in data.month | orderBy:key"

但我得到未排序的选择列表。

【问题讨论】:

  • 数组已经是日历顺序了,为什么还要排序呢?

标签: javascript angularjs select angularjs-filter angularjs-ng-options


【解决方案1】:

要使用过滤器进行跟踪,请使用track by

标记

ng-options="key as value for (key, value) in data.month | orderBy:'key' track by key"

更新

这个orderBy 永远不会工作,因为你有文字数组。您需要将此数组转换为类似 JSON 的对象,其结构类似于 [{id: 0, value: "M"}, {id: 1, value: "January"},......]

HTML

ng-options="item.id as item.value for items in data.month | orderBy:'id'"

Demo Plunkr

【讨论】:

  • 我的解决方案是空的选择列表
  • @Faud 尝试像@solid_luffy 所说的那样在键上添加单个'
  • 也一样。不工作。我收到错误:错误:$parse:lexerr Lexer Error
  • 我有格式:"day":[{"id":1,"value":1},{"id":2,"value":2},但得到空列表并出现错误:Error: [$parse:lexerr] http://errors.angularjs.org/1.3.13/$parse/lexerr?p0=Unterminated%20quote&p1=s%203-4%20%5B'%5D&p2=key'
  • @Faud 你能接受我的回答吗..我会给你工作小提琴/plunkr
【解决方案2】:

您缺少两个'。这部分,orderBy: key应该是orderBy:'key'

试试这个:

ng-options="key as value for (key, value) in data.month | orderBy: 'key'"

【讨论】:

    【解决方案3】:

    要解决此问题,需要重新格式化ng-option,例如:

    day.id as day.value for day in data.month
    

    数组data.month 将是告诉用户pankajparkar 的方式

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-10
      • 1970-01-01
      • 2020-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多