AngularJs在不使用ngModel

时间:2016-12-09 00:05:58

标签: javascript angularjs forms

在继续我的问题之前,我知道要使用AngularJsngModel内获取表单数据,但它会产生一些问题,因为每次用户与表单交互时都会运行摘要循环,这可能会在我的应用程序的某些方面导致一些性能问题。

我知道我可以通过使用ngModelOption对此进行“某种”控制,但这并不简单,因为我需要将其应用于表单内的每个ngModel。至少我不知道另一种方法可以解决这种情况。

基本上我需要的是拥有一个简单的表单,不需要立即更新任何东西(想想登录表单,用户注册,例如,我们只需要收集数据并发送到数据库)。

这很简单:

<form name="loginForm" novalidate ng-submit="loginForm.$valid && vm.login()">
    <input type="email" name="email" placeholder="E-mail" required />
    <input type="password" name="password" placeholder="Password" required />
    <button>Login</button>
</form>

但是没有在AngularJs中使用的所有事件,它将触发digestCycle,转移到其他区域等。

  

注意:我可以使用AngularJs(或纯JS)来执行此操作。

1 个答案:

答案 0 :(得分:1)

如果您被允许使用jQuery (not just jqLite)。然后,您可以执行此操作以序列化表单

HTML

<div ng-controller="MyCtrl">

    <form id="loginForm" name="loginForm" novalidate ng-submit="loginForm.$valid && vm.login()">
        <input type="email" name="email" placeholder="E-mail" required />
        <input type="password" name="password" placeholder="Password" required />
        <button type='button' ng-click="LogIn()">Login</button>
    </form>

</div>

脚本

angular.module('myApp', []).controller('MyCtrl', function($scope) {
    $scope.LogIn = function()
    console.log(angular.element('#loginForm').serialize());//Check
});