2014-05-15 2 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/

  • 저장 확인
  • 페이지에 도착하면 확인을 눌러 확인하십시오.
  • OK : 선택시 값이 보이지 않음 목록에.

저장하려면 mongo에 ville 특성의 ID 만 있으면됩니다. 그러나

내가 원에서 실행하고처럼은 ...

답변

4

당신은 도시 개체에 바인딩 할 수 car.ville 기대 ... 나는 이름 속성을 필요로 표시하지만 ngOptions 모델해야한다 "라고"한다 도시 에 묶여있다.

당신은 다음과 같이 변경 드롭 다운에서 도시 이름을 표시하지만, 도시의 객체 모델 (car.ville)를 연결할 경우

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

또한, 위해 ngOptions에 대한에 동일성 검사는 값이 아닌 참조로 수행되므로 배열의 항목을 참조하는 데 필요한 모델 값을 인식합니다 (동일한 속성을 가진 다른 객체뿐만 아니라).

도 참조하십시오. short demo.


UPDATE : 당신이 (1.2에서 소개)를 track by 기능을 기반으로 간단한 대안이, cities의 모든 항목이 독특한 _id이 있는지 확인하는 경우

:

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

이제 ngOptions은 목록의 개체를 모델 값으로 연결할 수 있지만 반드시 참조는 아니지만 _id pr을 기반으로합니다. 오티. (즉 "같은 _id는"지금까지 ngOptions에 관한 한 "동일한 개체"를 의미하므로 _id의가 고유해야합니다.)

참조, 또한,이 other short demo.