Мне нравится, чтобы мое пространство имен имен моделей было чистым и описательным, поэтому я использую такие вложенные переменные модели (где месяц и год вложены в сервис):
<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>
И в моем контроллере я хочу установить $scope.service.month
и $scope.service.year
в начальные значения, но я получаю ошибку javascript Cannot set property 'year' of undefined
, поэтому я предполагаю, что DOM не был проанализирован, а все переменные $scope
еще не созданы. Как я могу заставить некоторый код ждать запуска, пока DOM не будет проанализирован Angular и все модели не будут созданы?
Вот мой контроллер:
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(){
};
}])