angular js选择默认值不起作用

时间:2015-12-11 20:42:41

标签: angularjs

我在为我的选择列表设置默认值时遇到问题。任何有关这方面的帮助将不胜感激。我查看了其他类似的帖子,但解决方案似乎并不适用于我的情况。

我在控制器中填充$ 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文件的服务。

2 个答案:

答案 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 };