我的公司有主题要求,并要求我对AngularJs进行一些研究。为此,我想演示如何使用Angular来实现我们的主题。AngularJs指令简化表单输入
Here is a plunk我到目前为止。
这里是我所拥有的HTML的伟大工程。
<form name="frmLogin" ng-submit="submit()" novalidate>
<div class="form-field" data-ng-class="{'error': frmLogin.txtLastName.$invalid && frmLogin.txtLastName.$dirty && !frmLogin.txtLastName.$focused}">
<label for="txtLastName" class="required">Email</label>
<input id="txtLastName" name="txtLastName" type="text" data-ng-model="user.lastName" required autofocus ng-focus />
<div class="inline-validation" data-ng-show="frmLogin.txtLastName.$invalid && frmLogin.txtLastName.$dirty && !frmLogin.txtLastName.$focused">
{{getError(frmLogin.txtLastName.$error,
{
required: "LastName is required"
}
)}}
</div>
</div>
</form>
我正在致力于为开发人员简化HTML的指令。
这是我的想法。
<form name="frmUserName" novalidate>
<ff-text-input control-name="txtFirstName" control-label="First Name" ng-model="user.userEmail"></ff-text-input>
</form>
作为新手,我正在努力处理这个指令。
我不知道如何抓住整个frmLogin.txtLastName.$invalid && frmLogin.txtLastName.$dirty && !frmLogin.txtLastName.$focused
,所以开发人员不必这样做。
我能够通过使用ctrl.$name + "." + scope.controlName
来确定窗体名称和控件的名称,但我失去了对如何应用到$invalid
等等
感谢, 杜安
只需将html粘贴到模板中,然后添加属性,您将传递表单名称或使用jQuery:var formName = element.closest('form')。attr('name');'当你'将有形式的名称,你应该能够使用'formName [attr.controlName]。$ invalid' – jcubic
感谢您的快速回复。我的链接函数中没有ctrl参数的形式吗?我一直在想我应该可以做'console.log(ctrl [controlName]);'但我一直未定义。我可以通过'var formName = ctrl。$ name'获取表单名称,'var controlName = scope.controlName'获取controlName,但是当我把它们放在一起时,我会得到'undefined'。 –