Угловые входы не пусты при загрузке страницы при использовании ng-model внутри ng-repeat

Я пытаюсь использовать ng-repeat для создания пользовательской формы, но немного борюсь. Когда я привязываю входы к области с именами в массиве signupForm.modelBindings, имена устанавливаются как значение input, и, очевидно, это не то, что я хочу. Как привязать входные данные к области, оставив входные данные пустыми?

P.S: такое ощущение, что я пытаюсь сделать это очень нубским способом, есть ли еще лучший способ добиться того, что я хочу, без необходимости создавать множество массивов, содержащих значения?

EDIT: я нашел лучшее решение, но у меня все еще есть проблема с тем, что входные данные не пусты. Взгляните на обновленный код:

<tr ng-repeat="row in signupForm" 
    class="data-row">
    <td class="label-cell data-cell">
        <label ng-bind="(row.description) + ':'"></label>
    </td>
    <td class="data-cell">
        <input type="{{row.type}}" ng-model="row.model"
               placeholder="{{row.description}}" 
               class="round input">
    </td>
    <td class="error-cell data-cell">
        <span class="error">*</span>
    </td>
</tr>

Информация для формы:

$scope.signupForm = [
    {
        description: 'Firstname',
        type: 'text',
        model: 'user.firstname'
    },
    {
        description: 'Lastname',
        type: 'text',
        model: 'user.lastname'
    },
    {
        description: 'Date of birth',
        type: 'text',
        model: 'user.dateOfBirth'
    },
    {
        description: 'Country',
        type: 'text',
        model: 'user.country'
    },
    {
        description: 'Display name',
        type: 'text',
        model: 'user.displayName'
    },
    {
        description: 'E-mail',
        type: 'email',
        model: 'user.email'
    },
    {
        description: 'Password',
        type: 'password',
        model: 'user.firstname'
    },
    {
        description: 'Confirm password',
        type: 'password',
        model: 'user.confirmPassword'
    }
]

Я попытался очистить его, установив области для пустых строк, но это не сработало:

$scope.firstname, $scope.lastname, $scope.dateOfBirth, 
$scope.country, $scope.displayName, $scope.email, 
$scope.password, $scope.confirmedPassword = '';

person Chrillewoodz    schedule 17.02.2015    source источник
comment
что такое getNumber(number)?   -  person Deblaton Jean-Philippe    schedule 17.02.2015
comment
@DeblatonJean-Philippe Функция, возвращающая массив из X индексов. Так что я могу зациклить это количество раз.   -  person Chrillewoodz    schedule 17.02.2015
comment
@DeblatonJean-Philippe Я обновил код до другого решения, теперь оно должно иметь больше смысла.   -  person Chrillewoodz    schedule 17.02.2015


Ответы (1)


Пусть этот объект:

$scope.user = {
     firstName: '',
     lastName: '',
     ...
}

С информацией для вашей формы, которая будет выглядеть так:

$scope.signupForm = [
{
    description: 'Firstname',
    type: 'text',
    model: 'firstname'
},
{
    description: 'Lastname',
    type: 'text',
    model: 'lastname'
},

Вы должны иметь доступ к нему таким образом:

ng-model="user[row.model]"

ИЗМЕНИТЬ (на основе мнений):

В зависимости от случая, это решение может быть хорошим вариантом. Таким образом, вам просто нужно отправить объект «пользователь», чтобы сохранить его.

Я бы сделал это с небольшой разницей. Я бы получил этот объект из бэкэнда:

[{
   description : "Firstname",
   type: "text",
   value: ""
 },
 {
   description:
   ...

и у меня была бы моя ng-модель таким образом:

 ng-model="row.value"

А так как я немного ленив, я бы отправил описание, типа,... в бэкенд.

Второй вариант может быть проще, если такая модель должна иногда меняться.

person Deblaton Jean-Philippe    schedule 17.02.2015
comment
Это работает, вы бы сказали, что это лучший способ создания формы с использованием ng-repeat? Иметь массив объектов и таким образом получать доступ к нужной информации? - person Chrillewoodz; 17.02.2015
comment
Спасибо, будем разбираться. - person Chrillewoodz; 17.02.2015