AngularJS: Initialiser imbriquée portée des variables dans le contrôleur

Je tiens à garder mon espace de noms de noms de modèle propre et descriptive, donc j'utilise imbriqués les variables du modèle comme ceci (où le mois et l'année sont imbriquées dans le service):

<form data-ng-submit="submit()">
  <select data-ng-model="service.month" data-ng-options="m for m in months"/>
  <input data-ng-model="service.year"/> {{ service.year }}
  <input type="submit"/>
</form>

Et dans mon contrôleur, je veux mettre $scope.service.month et $scope.service.year aux valeurs initiales, mais j'obtiens une erreur javascript Cannot set property 'year' of undefined, donc je suppose que le DOM n'a pas été analysé et tous les $scope variables n'ont pas encore été créé. Comment puis-je avoir un code d'attendre pour s'exécuter jusqu'à ce que le DOM a été analysé par Angulaire et tous les modèles ont été créés?

Voici mon controller:

mod.controller('AddServiceCtrl', [
    '$scope', 
    '$rootScope', 
function($scope, $rootScope) {
  var date = new Date();
  $scope.months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
  $scope.service.year = 2014;   
  $scope.submit = function(){
  };
}])

OriginalL'auteur Tyler | 2014-03-21