Sorry this took so long! Just saw this post today. Not sure how much this has changed since the original post and no time to really check it, but this is my login form today.
Hope that helps.
<ion-view view-title="Log In" cache-view="false">
<ion-nav-back-button>
</ion-nav-back-button>
<ion-content padding="true">
<form name="form_login" ng-submit="login(userLogin)" novalidate>
<div ngshow="loginError" class="loginError center">{{loginError}}</div>
<div class="list">
<p class="error" ng-show="form_login.login_email.$invalid && form_login.login_email.$touched">Please enter a valid email.</p>
<label class="item item-input">
<input type="email" name="login_email" id="login_email" placeholder="Email"
ng-required="true"
ng-model="userLogin.email"
ng-pattern="/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/"
autocapitalize="off"
autocorrect="off">
</label>
<label class="item item-input ">
<input type="password" name="login_password" id="login_password" placeholder="Password" maxlength="25"
ng-required="true"
ng-model="userLogin.password"
autocapitalize="off"
autocorrect="off">
</label>
</div> <!-- /List -->
<div>
<a ng-href="#/app/forgotpassword" class="strong" ng-show="tries >= 2 && !userNotActive">Forgot your password?</a>
</div>
<button type="submit" class="button button-block button-positive icon-left ion-log-in"
ng-disabled="form_login.$invalid || form_login.$pristine">Log In</button>
</form>
<div class="strike">
<span>or</span>
</div>
<a ng-href="#/app/registration" class="button button-block button-positive icon-left ion-person-add">Create an Account</a>
</ion-content>
</ion-view>