【发布时间】:2015-02-05 16:32:44
【问题描述】:
我有一个表格,里面有一个这样的指令: addEditUser.html:
<form role="form" class="form-horizontal" novalidate name="addEditUserForm" >
<div class="form-group labelInputContainer">
<label for="emailAddr" class="col-xs-1 col-sm-1 col-md-1 control-label">E-mail</label>
<div class="col-xs-8 col-sm-8 col-md-8">
<input type="text" ng-class="{'invalid': addEditUserForm.emailAddr.$error.required}" maxlength="100" class="form-control" id="emailAddr" name="emailAddr" placeholder="E-mail" ng-model="user.emailAddr" required />
</div>
</div>
<address default-addr="defaultAddr" />
<button type="submit" class="btn greenButton" style="width: 100%;" ng-click="saveUser();" data-ng-disabled="addEditUserForm.$invalid">SAVE</button>
</form>
addEditUserController.js
app.controller('addEditUserController', function ($scope, $routeParams, $location, $filter, reposSvc) {
$scope.defaultAddr = {};
var id = $routeParams.id;
if (id) {
$scope.user = reposSvc.user.get({ id: id },
function (data) {
$scope.defaultAddr = data.defaultAddr;
});
});
指令 HTML (address.html):
<div>
<div class="form-group labelInputContainer">
<label for="streetAddress" class="col-xs-2 col-sm-2 col-md-2 control-label">Street</label>
<div class="col-xs-3 col-sm-3 col-md-3">
<input type="text" ng-class="{'invalid': addEditUserForm.streetAddress.$error.required}" maxlength="100" class="form-control noLimitsTextBox" id="streetAddress" name="streetAddress" ng-model="defaultAddr.streetAddress" placeholder="Street" required />
</div>
<label for="no" class="col-xs-2 col-sm-2 col-md-2 control-label">No</label>
<div class="col-xs-3 col-sm-3 col-md-3">
<input type="text" maxlength="6" class="form-control" id="no" name="no" placeholder="No" />
</div>
</div>
</div>
address.js:
(function () {
'use strict';
app.directive('address', function () {
return {
restrict: 'E',
replace: true,
templateUrl: 'app/directives/address.html',
scope: {
defaultAddr: '='
},
controller: function ($scope, reposSvc, toastr) {
}
};
});
})();
在我填写所有必填字段(在此简短示例中为电子邮件和街道)之前,该按钮处于禁用状态。但只有电子邮件才会应用“无效”类(背景颜色)。因此,验证主要适用于两个控件,但 ng-class 仅应用于主 html 中的电子邮件字段。
我究竟做错了什么?我怎样才能从 ng-class 获得“无效”类也应用于指令控件?
【问题讨论】:
标签: angularjs