2015-03-02 316 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]; 
    }); 
}]);