У меня есть следующий контроллер, где я получаю форму как "undefined".
angular.module('app').controller('MyController',['$scope', function(){
$(document).ready(function () {
var form = $scope.Form1; // undefined
}]);
});
Пожалуйста, предложите наилучший способ обработки готового состояния, чтобы форма была доступна.
благодаря
Попробуйте заменить
'MyController',['$scope', function(){
с
'MyController',['$scope', function($scope){
Вы забыли передать $ scope в свою функцию контроллера. Исправление:
angular.module('app').controller('MyController',['$scope', function($scope){ //$scope in function here
$(document).ready(function () {
var form = $scope.Form1; // undefined
}]);
});
Кроме того, вам действительно не нужен jQuery.
Синтаксис не является проблемой, я написал "на лету", поэтому это багги.
Но я решил проблему, переместив этот код в директиве => link, и я получаю $ scope.Form1.
благодаря
Вы забыли аргумент $scope
в своей function()
^
Что вы пропустили:
angular.module('app', [])
.$scope
в функции аргумента function($scope){
. Просто сделайте правильный селектор и передайте $scope
в func args:
angular.module('app', []).controller('MyController',['$scope', function($scope){ // <---pass $scope here
$scope.Form1 = document.querySelector('form')
}]);
Пример теста ниже:
angular.module('testApp', []).controller('formController',['$scope', function($scope){
$scope.form = document.querySelector('form');
$scope.getValue= function(){
alert($scope.form.id);
}
}]);
<div ng-app='testApp'>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.4/angular.min.js"></script>
<form ng-controller='formController' id='testForm'>
<input type='text' placeholder='dummy text to be placed' autofocus ng-focus='getValue()'>
</form>
</div>