【问题标题】:AngularJS populating the ng-options options from Java Map. (Sorting issue)AngularJS 从 Java Map 填充 ng-options 选项。 (排序问题)
【发布时间】:2016-12-09 13:23:21
【问题描述】:

所以我用 Java 对地图进行了排序,然后使用 new JSONObject(sortedMap); 传递到 Javascript。 这已经按值排序。当传入 Javascript 文件时,如果我将对象悬停在调试模式下,我会看到

$scope.fruitList = {'AP' : 'Apple', 'GP' : 'Grape', 'LM' : 'Lemon'}; 

(对不起,愚蠢的名字......只是一个例子)

在此之后,在 html 文件中,

<select ng-model="fruit" ng-options="key as value for (key, value) in fruitList" >
    <option value="">----select----</option>
</select>

因为我想要

<option value="">----select----</option>
<option value="AP">Apple</option>
<option value="GP">Grape</option>
<option value="LM">Lemon</option>

但是,由于某种原因,订单一出来就搞砸了。我不能给你我的代码的实际输出,因为这里没有这个例子。我不知道它是如何订购的。 我需要将键分配为 ng-model 并显示要显示的值。所以我认为我不能只提取值,对它们进行排序并显示它们。 任何帮助,将不胜感激! :) 在链接中,顺序是正确的。我不知道为什么,但我认为这是因为我在 javascript 文件中定义了 fruitList,而不是作为来自 Java 文件的消息传递。

http://jsfiddle.net/Lvc0u55v/7921//

【问题讨论】:

  • 你添加了一个 wrng jsfiddle 链接
  • @Sajeetharan 抱歉,已更正!
  • 它仅以正确的顺序显示
  • 哎呀,我忽略了你的代码。您的代码正常。您可以使用“水果”,它是关键。我删除了我的答案。
  • @Sajeetharan 它在链接中,因为fruitList在js文件中是硬编码的。

标签: javascript java angularjs hashmap ng-options


【解决方案1】:

显然,这是因为我使用的是 JSON 对象,而不是 JSON 数组。这样我可以防止更改顺序。

【讨论】:

    【解决方案2】:

    试试这个,

     <select ng-model="fruit" ng-options="key as value for (key, value) in fruitList | orderBy:'key'" >
    

    【讨论】:

    • 这不起作用。而且我认为这是因为它无法识别键,因为对象被定义为(键,值)对。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-24
    相关资源
    最近更新 更多