Это не выглядит ничем не отличающимся от того, что, как я думал, я обычно пишу, когда добавляю форму вместе в AngularJS, но по какой-либо причине ngSubmit не работает, а ngDisabled не отключает кнопку, когда поля пусты. Я взял раздел и вложил его в новый проект, чтобы увидеть, если он просто действует из-за некоторых других зависимостей, но он все еще не работает даже после обрезки жира. Может ли кто-нибудь увидеть, что не так, это очевидно после такого количества времени, что я не увижу его сам.ngSubmit и ngDisabled не работают, но ngModel привязан к контроллеру
Я предварительно загрузил поля формы, используя контроллер, чтобы проверить, что они говорят, интерполировал пользовательские данные в предварительных тегах, привязанных к ng-модели, так как я могу видеть, что он обновляется по мере ввода, и нет никаких ошибок ng , даже глядя на угловой плагин Chromes, он выглядит отлично. Но login() никогда не вызывается на ngSubmit, и кнопка никогда не будет ngDisabled, когда требуемые поля пустые.
усеченную версию вопроса, который до сих пор не работает:
<div ng-app="myApp">
<div ng-controller="LoginController as loginCtrl">
<form name="loginForm" role="form" ng-submit="loginCtrl.login()" novalidate></form>
<div class="form-group">
<label for="username">Username</label>
<input type="text" class="form-control" id="username" name="username" ng-model="loginCtrl.user.username" required>
</div>
<div class="form-group">
<label for="password">Password</label>
<input type="password" class="form-control" id="password" name="password" ng-model="loginCtrl.user.password" required>
</div>
<div class="form-group clearfix">
<button type="submit" class="btn btn-primary btn-block" ng-disabled="loginForm.$invalid">Login</button>
</div>
<pre>user data = {{loginCtrl.user | json}}</pre>
<pre>form invalid = {{loginForm.$invalid}}</pre> <!-- always says false... but it is invalid -->
</form>
</div>
</div>
<script>
(function() {
'use strict';
angular.module('myApp', [])
.controller('LoginController', [function() {
var self = this;
self.user = { username: 'asdf', password: 'asdf' };
self.login = function() {
console.log("hello world");
};
}]);
})();
</script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.24/angular.min.js"></script>
<script src="http://code.jquery.com/jquery-2.1.1.min.js"></script>
создать демо, код кажется нормально – charlietfl
Привет @ charlietfl, попробовал его в JSFiddle http://jsfiddle.net/qn095gth/2/, но не загружался – mtpultz
скрипка или плункер намного лучше, так как ваша ссылка исчезла. Убедитесь, что в скрипке вы выбрали 'no-wrap', поэтому код не находится в обработчике dom, загруженном – charlietfl