angular.js - angular radio repeat 默认选中值

浏览:21日期:2023-01-18

问题描述

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>

相关文章: