2013-11-13 5 views
0

Я читал об этом в других сообщениях, но не мог понять. У меня есть массив:Нужна помощь по выбору "little evolued" с угловым

$scope.adresses = [ 
    { id:"5", libelle:"DARGAUD EDITEUR", adresse:"Rue Moussorgski 15/27 75018 Paris France"}, 
    { id:"6", libelle:"CPE", adresse:"Rue de l'évangile 73 75018 Paris France"}, 
    { id:"7", libelle:"SIPACK", adresse:"Z.I. Gellainville Rue Joseph Cugnot 7 28630 Chartres France"}, 
    { id:"8", libelle:"URBAN COMICS", adresse:"Rue Moussorgski 15/27 75018 PARIS France"} 
]; 

Я хочу, чтобы сделать это:

<select name="livAdresse"> 
    <option value="5" title="Rue Moussorgski 15/27 75018 Paris France">DARGAUD EDITEUR</option> 
    <option value="6" title="Rue de l'évangile 73 75018 Paris France" selected="selected">CPE</option> 
    <option value="7" title="Z.I. Gellainville Rue Joseph Cugnot 7 28630 Chartres France">SIPACK</option> 
    <option value="8" title="Rue Moussorgski 15/27 75018 PARIS France">URBAN COMICS</option> 
</select> 

Я попытался это:

<select name="livAdresse" ng-model="livraison.toAdresse"> 
    <option ng-repeat="adr in adresses" ng-selected="adr.id==livraison.toAdresse" value="{{adr.id}}" title="{{adr.adresse}}">{{adr.libelle}}</option> 
</select> 

браузер не заботится о выбранной опции :-((firefox и chrome)

ответ

1

select имеет специальный повтор, который называется ng-options. Это то, ed для использования вместо ng-repeat.

<select name="livAdresse" ng-options="adr.libelle for adr in adresses" ng-model="livraison.toAdresse"> 
</select> 

Для того, чтобы выбрать по умолчанию вы можете установить его на свой ng-model в контроллере:

$scope.liveraison.toAdresse = $scope.adresses[1]; // index 1 to select the CPE options 

Documentation for select and ng-options is here.

+0

Хорошо, можно ли определить шаблон для опций в этом случае? Потому что мне нужно иметь тот же рендеринг, что и в моем примере. Thx вам – Arraxas

+0

Зависит от того, чего вы хотите, я думаю. Ваш шаблон выглядит так, как будто вы хотите выбрать опцию и использовать ее 'id'. Этого будет достаточно. –

+0

Какое требование у вас есть, что не будет работать с 'ng-options'? –

2

Попробуйте этот вариант:

HTML

<select> 
     <option ng-repeat="v in adresses" value="{{v.id}}" title="{{v.adresse}}" 
     ng-selected="adresses.indexOf(v) == 1">{{v.libelle}}</option> 
    </select> 

JS

$scope.adresses = [{ 
     id: "5", 
     libelle: "DARGAUD EDITEUR", 
     adresse: "Rue Moussorgski 15/27 75018 Paris France" 
    }, { 
     id: "6", 
     libelle: "CPE", 
     adresse: "Rue de l'évangile 73 75018 Paris France" 
    }, { 
     id: "7", 
     libelle: "SIPACK", 
     adresse: "Z.I. Gellainville Rue Joseph Cugnot 7 28630 Chartres France" 
    }, { 
     id: "8", 
     libelle: "URBAN COMICS", 
     adresse: "Rue Moussorgski 15/27 75018 PARIS France" 
    }]; 

Demo Fiddle

+0

Здравствуйте, ТНХ для jsfiddle связи, я отредактировал идентификатор, как это: http://jsfiddle.net/EyBVN/44/ Вы можете увидеть название на наведение курсора мыши и в браузере значения атрибута с правильным идентификатором. На самом деле это работает! За исключением инициализации ... Это моя проблема. На инициализации вы можете увидеть первый вариант (прослушивается), как это: <параметр значение = "строка: CPE?"> – Arraxas

+0

вправо, если вы хотите установить заголовок и значение, вам нужно использовать' ng-repeat' –

+0

@Arraxas см. Мое редактирование, я сделал, удалил 1-й пустой элемент и выбрал второй –

0

Я нашел решение. Она очень мощная, потому что все возможно с этой структурой, и это функционально! http://jsfiddle.net/EyBVN/48/

<div ng-app="" ng-controller="MyCtrl"> 
    <div ng-repeat="livraison in livraisons"> 
    {{livraison.libelle}} <select name="livAdresse" ng-model="livraison"> 
     <option ng-repeat="adr in adresses" ng-selected="adr.id==livraison.toAdresse" value="{{adr.id}}" title="{{adr.adresse}}">{{adr.libelle}}</option> 
    </select> {{livraison.when}} 
    </div> 
</div> 

Спасибо вообще за помощь :)

NB: Это решение не работает в течение длительного времени, потому что я включил в библиотеку JQuery. Эта библиотека создает проблемы совместимости.