我的公司有主題要求,並要求我對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'。 –