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