angularjs输入命名空间

时间:2014-11-25 19:51:38

标签: javascript angularjs forms angularjs-scope

在angularjs中,我习惯使用点符号来命名我的模型。但是,在处理表单和输入时,如果我为输入提供ng-model,而不是将其添加到表单的范围,则会将其添加到表单所在的相同范围。有没有办法改变这种行为?这是我的意思的一个例子

AngularJS Model View

这是创建它的代码

<form id="login-form" name="loginForm">
            <label for="login-username" class="hidden">Username </label>
            <input id="login-username" ng-minlength="5" type="{{Login.settings.login}}" name="username" ng-model="username" placeholder="Username" required ng-class="{error: !Login.validate(loginForm.username)}" />
            <span class="error" ng-class="{hidden: Login.validate(loginForm.username)}">{{loginForm.username.validation[1]}}</span>
            <label for="login-password" class="hidden">Password </label>
            <input id="login-password" type="password" name="password" ng-model="password" placeholder="Password" required ng-class="{error: !Login.validate(loginForm.username)}" />
            <span class="error" ng-class="{hidden: Login.validate(loginForm.password)}">{{loginForm.password.validation[1]}}</span>
            <input class="button expand radius" type="submit" value="Login"/>
</form>

正如您所看到的,表单上有一个用户名和密码字段的对象,命名空间为[form name].[field name],此对象包含该输入和其他信息的所有错误,我保存了一些自定义值,例如验证数组;但是该字段的实际值似乎填充在与loginForm相同的范围内,而不是作为子对象的一部分填充。我希望能够做的就是{{[form name].[field name].value}}来获得价值。我希望我说的是有道理的,如果需要,我很乐意澄清。

1 个答案:

答案 0 :(得分:0)

视图中的所有内容都会添加到$scope(如果已在此处定义),因此您的内容设置为$scope.username而不是$scope.loginForm.username

你可以更加明确:

<form id="login-form" name="loginForm">
  <label for="login-username" class="hidden">Username </label>
  <input id="login-username" ng-minlength="5" type="{{Login.settings.login}}" name="username" ng-model="loginForm.username" placeholder="Username" required ng-class="{error: !Login.validate(loginForm.username)}" />
  <span class="error" ng-class="{hidden: Login.validate(loginForm.username)}">{{loginForm.username.validation[1]}}</span>
  <label for="login-password" class="hidden">Password </label>
  <input id="login-password" type="password" name="password" ng-model="loginForm.password" placeholder="Password" required ng-class="{error: !Login.validate(loginForm.username)}" />
  <span class="error" ng-class="{hidden: Login.validate(loginForm.password)}">{{loginForm.password.validation[1]}}</span>
  <input class="button expand radius" type="submit" value="Login"/>
</form>
相关问题