2014-06-09 35 views
0

很多問題都有關於訪問對象的問題,但是我找不到可以解決問題的問題。從ng選項訪問對象

我有一個動態創建的對象是這樣的:

{ 
    id: "ISO 19115:MD_Metadata:identificationInfo:extent:temporalElement:extent", 
    value: "ISO 19115:MD_Metadata:identificationInfo:extent:temporalElement:extent:endPosition", 
    begin: "ISO 19115:MD_Metadata:identificationInfo:extent:temporalElement:extent", 
    ... 
} 

我想要做的是NG選項(angularJS)夫婦顯示器(ID - ISO 19115:MD ...,值 - ISO 19115:MD ...)爲第二個參數是通過第一個參數的路徑。

所以我在想,如果這樣的事情可以工作:

<select ng-model='selectedtype' ng-options="(item[0] + item[1]) for item in types"> 
     <option value="">select type</option> 
</select> 

注意到,我的目標是在$scope.types

這不起作用,所以有沒有解決方案就像指定的關鍵字訪問名稱:值夫婦。

我知道,這是一個相當不錯的設計了一個對象,我應該嘗試這樣:

{ 
[ 
    { 
     'name': 'id', 
     'value':'ISO 19115 ...', 
    }, 
    .... 
] 
} 

但是,如果可能的話我會很感激另一種解決方案。

+0

正如一個側面說明,它絕對不是*「更好的設計」,使一個只有「名稱」和「值」鍵的對象數組。對象特別是名稱 - 值對。 – JJJ

+0

是不是'item.id'和'item.value'而不是'item [0]'和'item [1]'? – Blackhole

+0

我不確定你是什麼意思,你想在你的選擇模型中顯示值和存儲ID。這是你的目標嗎?如果是這樣的話''ng-options =「item.id as item.value for items in types」' – Wawy

回答

1

您可以使用下面的格式,以便訪問對象的鍵值對:

ng-options="key as key+': '+value for (key, value) in types" 

另請參閱short demo

+0

這正是我一直在尋找的! – Cratein

1

ng-options支持字符串連接。所以,你可以很容易地使用類似,

ng-options="'id-'+item.id+', value-'+item.value for item in types"

演示:http://plnkr.co/edit/XHXKnNJOaDEAITtkI3HC?p=preview

+0

如果您讀到這個問題,OP會將名稱和值存儲在單獨的索引中。您提供的代碼不會因此而起作用。 –

+0

drew_w是對的,但你的答案幫助我解決了另一個問題,所以謝謝! – Cratein

+0

歡迎您:) – guru