1

我正在尝试使用以下代码加载角度“选择”

<select class="span11" ng-model="user.countryOfResidence" ng-options="c.option as c.value for c in countries" required>

它将数据加载到选择中,但默认选择值为空。

我的国家数组是

$scope.countries = [{option:'TL', value:'TIMOR-LESTE'},
{option:'TK', value:'TOKELAU'},
{option:'TJ', value:'TAJIKISTAN'},
{option:'TH', value:'THAILAND'},
{option:'TG', value:'TOGO'},];

如果我更改'TL''TIMOR-LESTE', (“选项”和“值”的字符串相同)它工作正常。谁能告诉我我的代码有什么问题。

用户对象是

$scope.user = {

        countryOfResidence : $scope.countries[0].value

    };
4

1 回答 1

2

填充有 ng-options 的选择会将 ng-model 字段设置为指定为value的内容,而不是option

在您给出的示例中,您将 user.countryOfResidence 设置为国家 [0].value,在本例中为“TIMOR-LESTE”,但值键为“TL”,因此不会选择它默认。

为了更好的可读性,我总是喜欢用 'label' 和 'value' 键来构建我的选择选项,如下所示:

// Controller

$scope.countries = [
  {value:'TL', label:'TIMOR-LESTE'},
  {value:'TK', label:'TOKELAU'},
  {value:'TJ', label:'TAJIKISTAN'},
  {value:'TH', label:'THAILAND'},
  {value:'TG', label:'TOGO'}
];

$scope.user = {
        countryOfResidence: $scope.countries[0].value
    };
};

// View

<select class="span11" ng-model="user.countryOfResidence" ng-options="c.value as c.label for c in countries" required=""></select>
于 2013-09-14T09:36:56.450 回答