2014-11-25 5 views
0

В angularjs Я делаю привычку использовать точечную нотацию для пространства имен моих моделей. Однако при работе с формами и вводами, если я даю свой ввод ng-модели, вместо того, чтобы быть добавленным к сфере применения формы, она добавляется к той же области, на которой находится форма. Есть ли способ изменить это поведение? Вот пример того, что я имею в видуугловое пространство ввода имен

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}}, чтобы получить значение. Я надеюсь, что то, что я говорю, имеет смысл, я был бы рад прояснить, если это необходимо.

+0

Read [документация] (https://docs.angularjs.org/api/ng/directive/ngModel). Похоже, вы хотите поместить 'loginForm.username' в качестве значения атрибута' ng-model' (и аналогично исправить другие входы). – hon2a

ответ

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> 
+0

loginForm автоматически создается угловым, пока я дал форму имени. Но на самом деле namespacing ng-models - это исправление. Думаю, я предположил, что он автоматически поместит их в объект формы для меня. Идите фигуру. – richbai90

+0

Интересно; Я не знал этого поведения. Я обновлю свой ответ и спасибо за добавление ввода – tyler

Смежные вопросы