2016-01-20 4 views
0

Я хочу иметь выбор для массива объектов. example Но так или иначе, я не могу получить доступ к свойствам выбранного объекта.Angularjs select ng-model binding для объекта

JS ---

$scope.test1={}; 
$scope.test = [{'name':'test1'},{'name':'test2'},{'name':'test3'}]; 

html--

<select style="width:100px;height:25px;" ng-model="test1"> 
    <option ng-repeat="attribute in test" value="{{attribute}}">{{attribute['name']}}</option> 
</select> 
{{test1}} 
{{test1.name}} 

здесь, test1.name приходит пустой.

+2

вы должны использовать 'нг-options' в этом случае вместо' нг-repeat' , Теги 'option' могут привязываться только к строкам, поэтому ваш' test1' в этом случае не является объектом, это буквально строковое представление объекта. 'ng-options' предназначен для преодоления этого поведения. – Claies

ответ

2

Делают это с помощью ngOpions это way.It дает правильное проверочные чем ng-repeat

<select style="width:100px;height:25px;" ng-model="test1" 
    ng-options="attribute.name for attribute in test"> 

Вот это Plunker

1

Это потому, что selectvalue интерпретируется как строка. Не как объект. И, конечно, строки не имеют name. Вы можете использовать ng-options, если вы хотите, чтобы ваши значения содержали весь объект. Read the documentation here.