1

我有以下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>

当我在我的 ng-options 中按 country.code 添加曲目时,我正确地获得了选择列表,并且值设置正确

 <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";

有谁知道我可以如何解决这个问题。

4

1 回答 1

2

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

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

希望这可以帮助。

编辑:如果您希望 的值$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

于 2014-08-12T17:06:15.893 回答