我在angular.js webapp中有一个下拉列表,如:
<select ng-model="script"
ng-options="s as s[1].shortDescription for s in objs | orderBy:'toString()'"
ng-change="updateParam()">
</select>
数组中的对象是
的类型["test1", {shortDescription: "first test", longDescription: "AAAAAAAA"}]
我想按每个条目的shortDescription
属性排序。问题是排序不起作用。
UPDATE1
示例数据
["test1", {shortDescription: "first test", longDescription: "AAAAAAAA"}]
["test2", {shortDescription: "2nd test", longDescription: "BBBB"}]
["test3", {shortDescription: "3rd test", longDescription: "CCCC"}]
答案 0 :(得分:0)
看起来你想要以下
| orderBy: 'shortDescription'
按属性shortDescription
排序的位置。有关详细信息,请参阅orderBy docs。这是一个简单的例子来证明这一点......
<select ng-model="script"
ng-options="s as s.shortDescription for s in objs | orderBy: 'shortDescription'">
</select>
$scope.objs = [{shortDescription: "first test", longDescription: "AAAAAAAA"},
{shortDescription: "aaa short", longDescription: "BBBBBB"}]
JSFiddle Link - 工作示例
答案 1 :(得分:0)
正如@sal niro所展示的那样,orderBy过滤器处理对象(按对象的属性排序),您的样本数据显示您正在迭代数组数组,该数组在第一个位置有一个字符串并且在第二个是一个对象,忘记了对象,你有一个数组数组,它没有属性,只有元素,你无法告诉过滤器按一个数组元素的属性排序,据我所知:)。
最好的解决方案是将该数组数组转换为一个对象数组,其中每个对象都有一个标题,shortDescription和一个longDescription。
{
title: 'test1',
shortDescription: 'a',
longDescription: 'aaaaaaaa'
}