Javascript 如何在angularjs中对下拉列表进行排序?

Javascript 如何在angularjs中对下拉列表进行排序?,javascript,angularjs,Javascript,Angularjs,我尝试使用angularjs通过下拉菜单进行订购。但是,排序不起作用。请帮帮我。请检查此链接: HTML: 我的Html代码在这里 <select ng-options="key as value for (key, value) in charityList | orderBy:'value'" ng-model="reportSearch.charityId"> <option value="">All Charity</option> <

我尝试使用angularjs通过下拉菜单进行订购。但是,排序不起作用。请帮帮我。请检查此链接:

HTML: 我的Html代码在这里

<select ng-options="key as value for (key, value) in charityList | orderBy:'value'" ng-model="reportSearch.charityId">
     <option value="">All Charity</option>
</select>

请检查此链接:

您拥有的是对象而不是数组。数组由V形符号定义

charityList = [ 
     {"name": "softweb charity"}, 
     {"name": "charity 1"},
     {"name": "charity update"},
     {"name": "Engagement1 Name"},
     {"name": "United Way Enagagement"},
     {"name": "Indian Noble Charity"}
],
如果你能让它看起来像这样,你可以用orderBy对它进行排序

ng-options="value.name for value in charityList | orderBy:'name'"
这样试试看

控制器:

$scope.sort = function(list) { //returns an array : ["charity 1","charity update","Engagement1 Name","Indian Noble Charity","softweb charity", "United Way Enagagement"]
  return $.map(list, function(el) { return el }).sort(function (a, b) {
      return a.toLowerCase().localeCompare(b.toLowerCase());
  });
}
html:

<select ng-options="value as value for value in sort(charityList)" ng-model="reportSearch.charityId">
     <option value="">All Charity</option>
</select>

一切慈善

您必须将对象转换为对象数组,否则orderBy将无法工作

 angular.forEach($scope.charityList, function(value, key) {
        arr.push({key: key, value: value})

      })

钥匙是我的要求..我没有移除钥匙(1,2,3,4,6,7)你能创建你想要实现的目标吗?对不起,伙计,OrderBy只处理数组。检查此项我检查了您的小提琴,但小提琴中的orderBy无法工作,因为根据语法参数,orderBy应该是“对象数组中的属性”,而在您的情况下,charityList是单个“对象”。这就是为什么在我的回答中,我调用函数sort(),它返回一个成对排序的值数组?
 angular.forEach($scope.charityList, function(value, key) {
        arr.push({key: key, value: value})

      })