2015-06-07 82 views
1

我有一個下拉在我angular.js web應用程序,如:排序不工作的下拉菜單

<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

ng選項中的數組索引看起來很可疑。 OrderBy後面應該跟着屬性名稱。 –

回答

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 - 工作示例

+0

感謝您的建議。不知道是否有解決方法,我們不改變對象數組的格式?謝謝。 – packetie

+0

@codingFun你可以發佈多個條目的樣本數據嗎?也許我不能正確理解你的結構 – scniro

+0

剛剛添加了一個更新與多個條目的問題。謝謝。 – packetie

0

正如@sal德尼羅正在展示中,排序依據濾鏡上的對象(爲了通過屬性你的示例數據顯示你正在迭代一個數組數組,在第一個位置有一個字符串,第二個有一個對象,忘記了這個對象,你有一個數組數組,它​​沒有有屬性,只是元素,theres沒有辦法你不能根據數組元素的一個屬性排序過濾器,據我所知:)。

最好的解決方案是將該數組數組轉換爲一個對象數組,其中每個對象都有一個標題,shortDescription和longDescription。

{ 
    title: 'test1', 
    shortDescription: 'a', 
    longDescription: 'aaaaaaaa' 
} 
+0

我花了很大的努力,對數據格式進行了修改,現在它運行正常。感謝你和@sal niro。 – packetie

+0

我不明白這是如何被接受的答案。問題是如何篩選我的答案中提到的'ng-options'中的項目。這個建議解決了你的數據結構的一個小問題 - 你需要改變,正如你在我的答案中看到的那樣。 @codingFun – scniro

+0

@sal niro,希望我可以接受這兩個答案:-)我接受了這個答案,因爲它讓我痛苦並改變了格式從'[「test1」,{shortDescription:「a」,longDescription:「aaaaaaa 「}]'格式爲{{title:'test1',shortDescription:'a',longDescription:'aaaaaaaa'}'。 – packetie