所以我有以下控制器:
app.controller('ProfileController', ['$http','$sessionStorage','api', '$scope','Session', function ($http,$sessionStorage, api, $scope, $state, Session) {
$scope.titles = {};
$scope.selected_title = $sessionStorage.activeUser.user.title.id;
$http.get(api.getUrl('title',null))
.success(function(response) {
$scope.titles = response;
});
}]);
现在有了这个我有以下选择:
<select ng-init="selected_title.id" class="form-control" ng-model="selectedItem" ng-options="item as item.name for item in titles"></select>
然而,由于select的选项是使用http加载的,因此它将在页面加载后加载,因此默认值为空。
谁能告诉我如何避免这种情况?
答案 0 :(得分:1)
ngInit
不起作用,它不是默认值。
app.controller('ProfileController', ['$http','$sessionStorage','api', '$scope','Session', function ($http,$sessionStorage, api, $scope, $state, Session) {
$scope.titles = [];
$http.get(api.getUrl('title',null))
.success(function(response) {
$scope.titles = response;
for (var i = 0; i < response.length; i++) {
if (response[i].id == $sessionStorage.activeUser.user.title.id) {
$scope.selectedItem = response[i];
break;
}
}
});
}]);
从您的选择中删除ngInit
。
答案 1 :(得分:0)
只需在数据返回时选择标题:
app.controller('ProfileController', ['$http','$sessionStorage','api', '$scope','Session', function ($http,$sessionStorage, api, $scope, $state, Session) {
$scope.titles = {};
$scope.selected_title = $sessionStorage.activeUser.user.title.id;
$http.get(api.getUrl('title',null))
.success(function(response) {
$scope.titles = response;
$scope.selectedItem = $scope.titles[0];
});
}]);