【问题标题】:AngularJS - Dropdown Select Values are not in Order with ng-repeatAngularJS - 下拉选择值与 ng-repeat 不按顺序排列
【发布时间】:2014-12-12 22:12:36
【问题描述】:

我有一个包含以下数据的选择下拉列表; (这也是 Chrome 中控制台的输出)。

{
    8: "Something", 
    9: "Something Again!", 
    10: "And again", 
    11: "And again!", 
    12: "etc...", 
    13: "etc etc...", 
}

选择下拉菜单的 html 和角度;

<select name="name" ng-model="choosen"> 
   <option value="">Please Select</select>
   <option ng-repeat="(key, value) in data" value="[[key]]">[[value]]</option>
</select>

数据是通过在 Laravel (4.2) 中使用 lists 函数使用以下查询获得的;

Model::lists('name','id');

由于某种原因,下拉列表的数据在我的下拉列表中重新排序;

<select name="name" ng-model="choosen"> 
   <option value="">Please Select</select>
   <option value="10">And again</option>
   <option value="11">And again!</option>
   <option value="12">etc...</option>
   <option value="13">etc etc...</option>
   <option value="8">Something</option>
   <option value="9">Something Again!</option>
</select>

如何使 ng-repeat 的输出以正确的数字顺序遍历数据顺序?

像这样;

<select name="name" ng-model="choosen"> 
   <option value="">Please Select</select>
   <option value="8">Something</option>
   <option value="9">Something Again!</option>
   <option value="10">And again</option>
   <option value="11">And again!</option>
   <option value="12">etc...</option>
   <option value="13">etc etc...</option>
</select>

Plunkr 是here

【问题讨论】:

  • ->orderBy('id', 'asc') ? ngRepeat 不会重新排序您的数据,因此您传递给 ngRepeat 的数据是按该顺序排列的(对不起,文字游戏)
  • @originof 从控制器到角度数据的顺序是正确的,控制台输出的是数据的顺序。但是当放入 ng-repeat 时,数据会四处移动。
  • 你确定吗?尝试写一个 plunkr
  • @originof 我非常积极。

标签: php angularjs laravel-4 angularjs-ng-repeat


【解决方案1】:

似乎 ngRepeat 通过 $$hash 对数据进行排序,可能的解决方法是使用列出键然后迭代它们的函数:

 $scope.keys = function(obj){
  return obj? Object.keys(obj) : [];
 }

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

【讨论】:

  • 你也可以创建一个过滤器来做同样的工作
猜你喜欢
  • 2012-09-26
  • 1970-01-01
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多