我在为我的选择列表设置默认值时遇到问题。任何有关这方面的帮助将不胜感激。我查看了其他类似的帖子,但解决方案似乎并不适用于我的情况。
我在控制器中填充$ scope.series。然后下拉似乎也在填充,但它没有设置默认值。
<select name="repeatSelect" id="repeatSelect"
ng-init="selectedItem = series[0].code"
ng-model="selectedItem"
ng-options="serie.name for serie in series track by serie.code"
ng-change="update()"></select>
这是json:
[
{
"code": "code1",
"name": "name 1",
},
{
"code": "code2",
"name": "name 2",
}
]
以下是控制器
angular.module("myApp", [])
.controller('myController', function ($scope, dataService) {
dataService.getSeries(function (response) {
$scope.series = response.data;
console.log(response.data);
})});
其中dataService是从$ http get获取json文件的服务。
答案 0 :(得分:2)
当ng-init
中没有值时,你有series
尝试评估表达式,因为它的ajax还没有返回值。
因此,您需要在ajax成功中设置ng-model
值,而不是ng-init
<强>标记强>
<select name="repeatSelect" id="repeatSelect"
ng-model="selectedItem"
ng-options="serie.name for serie in series"
ng-change="update()">
</select>
<强>代码强>
angular.module("myApp", [])
.controller('myController', function ($scope, dataService) {
dataService.getSeries(function (response) {
$scope.series = response.data;
$scope.selectedItem = $scope.series[0].code; //setting ng-model after getting data
console.log(response.data);
});
});
答案 1 :(得分:0)
似乎将此代码添加到控制器就可以了,并且不需要使用ng-init。:
$scope.selectedItem = { code: $scope.series[0].code, name: $scope.series.name };