在angularjs中,我习惯使用点符号来命名我的模型。但是,在处理表单和输入时,如果我为输入提供ng-model,而不是将其添加到表单的范围,则会将其添加到表单所在的相同范围。有没有办法改变这种行为?这是我的意思的一个例子
这是创建它的代码
<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}}
来获得价值。我希望我说的是有道理的,如果需要,我很乐意澄清。
答案 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>