2015-03-02 223 views
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; 
     }); 

}]); 

现在我有以下选择:

<select ng-init="selected_title.id" class="form-control" ng-model="selectedItem" ng-options="item as item.name for item in titles"></select> 

然而,由于选择的选项是使用加载http然后它会在页面加载后加载,因此默认值是什么都没有。

任何人都可以告诉我我可以避免这种情况吗?

回答

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.

+0

这并不可悲的工作:■不过,我可以看到,它说的价值,但选择本身犯规显示所选值 – 2015-03-02 13:48:34

+0

@MarcRasmussen是的,我并不认为这两个对象不等于连如果拥有相同的内容。我修好了。 – Pablo 2015-03-02 14:38:32

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