2014-12-18 5 views
1

Невозможно получить доступ к переменной формы из моего контроллера, когда я пытаюсь получить к ней доступ через $ scope.locationForm, у меня есть «undefined», но когда я вызываю console.log ($ scope) Я вижу, что в консоли есть loactionForm.Невозможно получить доступ к форме внутри контроллера AngularJS

Мой HTML код

<div ng-controller="LocationsController as ctrl"> 
<form class="form-inline" name="locationForm"> 
    <div class="form-group"> 
     <!-- <div class="input-group"> --> 
      <label for="location-name">Название населенного пункта</label> 
      <input required 
        name="name" 
        ng-model="ctrl.location.name" type="text" class="form-control" id="location-name" placeholder="Название населенного пункта"> 
      <label for="location-name">Район</label> 
      <select required 
        name="region_id" 
        ng-model="ctrl.location.region_id" 
        ng-options="region.id as region.name for region in ctrl.regions" class="form-control" placeholder="Название района"></select> 
      <input ng-click="ctrl.save()" 
        ng-disabled="locationForm.$invalid" type="submit" class="btn btn-default" value="Cохранить"> 
      <a class="btn btn-default" ng-click="ctrl.reset()" ng-show="locationForm.$dirty">Сброс</a> 
     <!-- </div> --> 
    </div> 
</form> 

Мой код контроллера:

function LocationsController($scope, Location, Region, $q) { 
var lc = this, 
    l_index; 
    lc.form ={}; 
    lc.regions = lc.locations = []; 
    lc.regions = Region.query(); 
    lc.regions.$promise.then(function(data) { 
     lc.locations = Location.query(); 
    }); 
    lc.getRegion = function (id) { 
    return lc.regions.filter(function(obj) { 
     return obj.id == id; 
    })[0].name; 
    }; 
    console.log($scope); 
    // console.log($scope.locationForm); 
    lc.reset = function() { 
     lc.location = new Location; 
    } 
    lc.reset(); 

};

+0

Я думаю, что проблема заключается в 'LocationController' инициализируется перед' form' элемент собран - http://jsfiddle.net/arunpjohny/jcvqdf06/1/ –

+0

Знаете ли вы, как это исправить? – huuuk

+0

Что вы пытаетесь достичь –

ответ

1

Проблема заключается в том, что инициализируется LocationsController элемент form еще не скомпилирован. Таким образом, один возможный хак использовать тайм-аут, как

function LocationsController($scope, Location, Region, $q, $timeout) { 
    //then later 
    $timeout(function(){lc.reset();}) 
} 
Смежные вопросы