2014-02-02 1 views
2

Например, я хотел бы сделать что-то вроде этого:Получить выделенный текст (не значение) выберите элемент в угловом

<select ng-model="persons"> 
    <option value="person1">Anna Smith</option> 
    <option value="person2">Karl Pettersson</option> 
    <option value="person3">Ylvis Russo</option> 
</select> 
<p ng-view="persons"><p> 

и имеющий дисплей просматривать каждое имя при выборе в выпадающем списке, а не его значение , Является ли это возможным?

Я попытался посмотреть модель и присвоить новую модель текстовому значению с помощью jQuery. Однако это оказалось сложным, поэтому, если это лучший способ сделать это, я небольшой пример был бы потрясающим!

ответ

7

Вам просто нужно определить объект ваших лиц, а затем вы можете делать с ним все, что хотите. Есть много способов сделать это ... Вот пример:

HTML

<select ng-model="persons" 
    ng-options="p as p.label for p in persons"> 
</select> 

<p ng-repeat="p in persons"> 
    {{p.value}}: {{p.label}} 
</p> 

JS

$scope.persons = [ 
    { value: 'person1', label: 'Anna Smith' }, 
    { value: 'person2', label: 'Karl Pettersson' }, 
    { value: 'person3', label: 'Ylvis Russo' } 
]; 

Вот является jsfiddle: http://jsfiddle.net/bKHh8/

UPDATE

Здесь это с тегами опций, которые не используют угловые индексы для значений (это точно что отвечает на ваш вопрос): http://jsfiddle.net/bKHh8/1/

<select> 
    <option ng-repeat="p in persons" value="{{p.value}}">{{p.name}}</option> 
</select> 
+0

+1 Я собирался это предложить. –

+0

@EdwinDalorzo Спасибо. Я был удивлен, что ng-options в теге select не позволяют использовать пользовательские значения параметров ... Добавлен еще один пример. – Shomz

+0

Спасибо! Тем не менее, мои варианты поступают из db, поэтому прямо сейчас я их генерирую в php. Полагаю, я мог бы сделать что-то вроде эха «var persons = json_encode ($ persons)»; а затем выполните $ scope.persons = person в моем контроллере ng. Это как вы это сделаете? –