问题描述
html代码如下:
<ul> <li ng-repeat='thing in favoriteThings'> <input type='radio' ng-value='thing' ng-model='selected' name='stuff'/> {{thing.text}} </li></ul>
js代码如下:
$scope.favoriteThings = [ {nr: 1, text: 'Raindrops on roses'}, {nr: 2, text: 'Whiskers on kittens'}, {nr: 3, text: 'Bright copper kettles'}, {nr: 4, text: 'Warm woolen mittens'}, {nr: 5, text: 'Brown paper packages tied up with strings'}, {nr: 6, text: 'Cream colored ponies'}, {nr: 7, text: 'Crisp apple streudels'}, {nr: 8, text: 'Doorbells'}, {nr: 9, text: 'Sleigh bells'}, {nr: 10, text: 'Schnitzel with noodles'}, {nr: 11, text: 'Wild geese that fly with the moon on their wings'}, {nr: 12, text: 'Girls in white dresses with blue satin sashes'}, {nr: 13, text: 'Snowflakes that stay on my nose and eyelashes'}, {nr: 14, text: 'Silver white winters that melt into springs'} ]; $scope.selected = {nr: 1, text: 'Raindrops on roses'};
目前我这样做,不能默认选中一个值,也不知道问题出在哪里。
我想页面一加载就默认选中一个值,其中每一项的值类型是对象,我应该如何做?
问题解答
回答1:需要设置ng-model的默认值如:
$scope.selected = $scope.favoriteThings[0];
将会默认选择这一项。
不能使用
$scope.selected = {nr: 1, text: 'Raindrops on roses'};
因为ng-model中对于Object只有相同的引用才会认为两者相等,上述做法新建一个对象,与repeat中的value不等
回答2:可在 ng-repeat 中使用 ng-checked , 举个栗子:
<label ng-repeat='(key, val) in genders track by $index'> <input type='radio' name='gender' value='{{key}}' ng-checked='list.gender==key'>{{val}}</label>