使用ng-options with angular显示带有键和值的选择选项,并设置一个默认值



我有以下json:

[
    {"country": "United States", "code": "US"},
    {"country": "Canada", "code": "CA"},
    {"country": "Mexico", "code": "MX"}
 ]

在我看来我有

 <select ng-model="selectedCountry" name="selectedCountry" id="selectedCountry" ng-options="country.country as country.country for country in countries" ng-change="onCountryChange()" required></select>

我可以在我的控制器中设置一个默认国家,但唯一的问题是下拉菜单看起来像这样

 <option value="0" selected="selected">United States</option>
 <option value="1">Canada</option>
 <option value="2">Mexico</option>

当我按国家添加track时。代码在我的ng-options我得到正确的选择列表与值设置正确

 <option value="?" selected="selected"></option>
 <option value="US">United States</option> 
 <option value="CA">Canada</option>
 <option value="MX">Mexico</option>

但是我无法从我的控制器设置一个默认值

 $scope.selectedCountry = "Canada";

    $scope.selectedCountry = "CA";

有谁知道如何解决这个问题吗

对于track by表达式,您可以省略任何其他属性,并设置默认值如下:

$scope.selectedCountry = { code: "CA" };

希望对你有帮助。

EDIT:如果您希望$scope.selectedCountry的值只是一个字符串(即:'US', 'CA,或'MX'),没有必要使用track by,您可以使用ng-options,如下所示:

<select ng-model="selectedCountry" name="selectedCountry" id="selectedCountry" ng-options="country.code as country.country for country in countries" ng-change="onCountryChange()" required></select>

示例Plunker: http://plnkr.co/edit/QBRoV09sAlufSffpPPpJ?p=preview

最新更新