Ответ 1
ngModel - это довольно удивительно! Если вы укажете индексы в качестве модели selectedValues
<select multiple ng-model="selectedValues">
построенный из вашего списка (selected
) в $watch
$scope.$watch('selected', function(nowSelected){
// reset to nothing, could use `splice` to preserve non-angular references
$scope.selectedValues = [];
if( ! nowSelected ){
// sometimes selected is null or undefined
return;
}
// here the magic
angular.forEach(nowSelected, function(val){
$scope.selectedValues.push( val.id.toString() );
});
});
ngModel автоматически выберет их для вас.
Обратите внимание, что привязка данных является однонаправленной (selected
to UI). Если вы хотите использовать пользовательский интерфейс <select>
для создания своего списка, я бы предложил рефакторинг данных (или используя другой $watch
, но они могут быть дорогими).
Да, selectedValues
должен содержать строки, а не числа. (По крайней мере, это было для меня:)
Полный пример в http://jsfiddle.net/JB3Un/