延迟加载项目的角度选择默认值

时间:2015-03-02 13:30:46

标签: javascript angularjs

所以我有以下控制器:

    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加载的,因此它将在页面加载后加载,因此默认值为空。

谁能告诉我如何避免这种情况?

2 个答案:

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

Documentation for 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];
  });
}]);