2014-05-15 257 views
0

所以我的問題幾乎與這一個相同:how to use ng-option to set default value of select elementng選項選擇默認值

我不能得到好的價值被選中。我也嘗試了許多ng-init等解決方案...

但我無法弄清楚如何解決它。

我有這樣的模式:

var CarSchema = new Schema({ 
[... some stuff ...] 
ville: { 
    type: Schema.ObjectId, 
    ref: 'City' 
} 
}); 

var CitySchema = new Schema({ 
name: { 
    type: String 
} 
}); 

我的HTML代碼:

<select ng-model="car.ville" ng-options="city.name for city in cities"><option value=""/></select> 
      HERE 1: {{ car.ville | json }} 
      <BR> 
      HERE 2 : {{cities | json}} 

由於作爲結果,我得到:

HERE 1: { "_id": "536fee62cadf4efc08000001", "name": "Hinsdale" } 

HERE 2 : [ { "_id": "53703935cadf4ef008000000", "name": "Noumea" }, { "_id": "536fee62cadf4efc08000001", "name": "Hinsdale" }, { "_id": "536fee3ccadf4ef808000000", "name": "Bascom" } ] 

所以我應該有選擇的欣斯代爾市..但不,它在第一行(空行)。

我在做什麼錯?我試了很多配置,但它仍然沒有工作

加入小提琴例如:jsfiddle.net/pL44W/5

所以我使它幾乎與這個小提琴工作:

http://jsfiddle.net/Tyvain/UuVYL/

  • 確定保存
  • 確定當我們到達頁面時檢索良好的值
  • 不正常:當我們選擇時沒有看到值在列表中。

要保存,mongo只需要ville屬性中的id。但要顯示我需要的name屬性...

這就像我在圈子正在運行...

回答

4

您希望car.ville綁定到一個城市的對象,但你ngOptions「說」的模式應該被綁定到城市名稱

如果你想顯示在下拉列表中的城市的名字,但你的模型(car.ville)與城市對象關聯,改變這樣的:

ng-options="city as city.name for city in cities" 

此外,爲了ngOptions到識別引用數組中項目所需的模型值(而不僅僅是具有相同屬性的不同對象,因爲相等性檢查是通過引用而不是通過值完成的)。

另外,參見short demo


UPDATE:

如果你確信在cities每一個項目都有一個唯一的_id,有(在V1.2推出)的基礎上track by功能一個簡單的選擇:

ng-options="city as city.name for city in cities track by city._id" 

現在,ngOptions可以將列表中的對象與模型值關聯,而不一定通過引用,但基於_id pr operty。 (即「同_id」是指「同一目標」就ngOptions而言,所以請確保您_id s爲唯一的。)

還參見本other short demo