У меня есть "рекомендации", массив рекомендаций:
{Id: 1, Label: "option 1"},
{Id: 2, Label: "option 2"}
И "items", массив элементов вроде:
{Id: 1, Name: "Name 1", Recommend: recommendations[0]},
{Id: 2, Name: "Name 2", Recommend: recommendations[1]}
Теперь мне нравится показывать список элементов, для каждого элемента, показать имя элемента и группу переключателей, чтобы пользователь мог выбрать один из возможных вариантов "Рекомендовать".
Мой html выглядит так:
<div ng-repeat="i in viewModel.items">
<div>
{{i.Name}}
</div>
<div class="form-group">
<label class="control-label col-md-3">Recommend this?</label>
<div class="col-md-9">
<div class="radio" ng-repeat="r in viewModel.recommendations">
<label>
<input type="radio" ng-model="i.Recommend" ng-value="r"/>
{{r.Label}}
</label>
</div>
</div>
{{i.Name}}, {{i.Recommend.Label}}
</div>
</div>
{{viewModel.items | json}}
Когда я нажимаю одну из опций для каждого элемента, я вижу соответствующую рекомендацию. Label изменяется правильно, поэтому кажется, что она привязана к модели ok.
Моя проблема заключается в том, что при начальной загрузке страницы группа переключателей каждого элемента не показывает текущую опцию, даже если "элементы", похоже, имеют один из возможных объектов Рекомендация. (Все переключатели не отмечены). Что мне не хватает?
Вы должны установить значение "Рекомендовать" для привязки к $ scope.recommendations в начале.
angular.module('test', []).controller('testCtrl', function($scope) {
$scope.viewModel = {};
$scope.viewModel.recommendations = [{Id: 1, Label: "option 1"}, {Id: 2, Label: "option 2"}];
$scope.viewModel.items = [{Id: 1, Name: "Name 1", Recommend: $scope.viewModel.recommendations[0]}, {Id: 2, Name: "Name 2", Recommend: $scope.viewModel.recommendations[1]}]; });
jsFiddle: http://jsfiddle.net/rkgetptj/