Добавить динамический HTML для нескольких элементов в форму Angularjs и использовать его в области при нажатии кнопки

0

У меня есть эта форма:

 <h4>Now lets break it down. Tell us about the users.</h4>
            <div id="user1">
                <p class="bold">User #1</p>
                <label>User type:</label>
                <input type="radio" name="user-type" value="commercial" checked> Commercial &nbsp;<input type="radio" name="trial" value="trial"> Trial<br/>

                <div id="commectial-user">
                    <label>User Name:</label>
                    <input type="text" name="user-name">
                    <label>Email:</label>
                    <input type="text" name="email">
                    <label>Password:</label>
                    <input type="password" name="password">
                    <label>Name:</label>
                    <input type="text" name="name">
                    <button id="next-user" class="smallbutton">Click here to add another user if applicable….</button>
                    <br/><br/>
                </div>
            </div>

Это будет частью более крупной угловой формы, но я хочу, чтобы пользователь мог добавить несколько форм для добавления пользователя в форму. Так, например, если пользователь нажимает кнопку с идентификатором следующего пользователя, я хочу отобразить те же поля, но затем иметь различные значения для нового пользователя, когда будет происходить операция сохранения.

В общем, у меня есть два вопроса:

  1. Как я могу добавить несколько HTML-форм, таких как эта по нажатию кнопки в угловой
  2. Как только пользователь нажмет кнопку "Сохранить", как я могу получить данные из нескольких форм, таких как приведенная выше?
  • 0
    var newElm = $compile('<element></element>')($scope); var parent= document.getElementById('element'); angular.element(parent).append(newElm); как то так будет работать.
  • 0
    где и как я должен использовать этот код? Спасибо
Показать ещё 6 комментариев
Теги:
angularjs-scope
angularjs-directive

1 ответ

0
Лучший ответ

Чистый угловой способ сделать это - использовать функцию контроллера для добавления пользователей и ng-repeat, чтобы отобразить коллекцию пользователей, не прибегая к какой-либо манипуляции с DOM в коде. Здесь работает бухнуться

контроллер

app.controller('MainCtrl', function($scope) {
  $scope.users = [{
    username: 'jsmith',
    email: '[email protected]',
    password: '123456',
    name: 'John Smith',
    userType: 'commercial'
  }, {
    username: 'asmith',
    email: '[email protected]',
    password: '123456',
    name: 'Alice Smith',
    userType: 'trial'
  }, {
    username: 'dsmith',
    email: '[email protected]',
    password: '123456',
    name: 'David Smith',
    userType: 'commercial'
  }];

  $scope.addUser = function() {
    var newUser = {
      username: '',
      email: '',
      password: '',
      name: '',
      userType: 'commercial'
    };
    $scope.users.push(newUser);
  };
});

HTML

<div ng-repeat="user in users">
  <p class="bold">User {{$index+1}}</p>
  <label>User type:</label>
  <input type="radio" ng-model="user.userType" value="commercial"> Commercial &nbsp;
  <input type="radio" ng-model="user.userType" value="trial"> Trial
  <br/>

  <div>
    <div>
      <label>User Name:</label>
      <input type="text" ng-model="user.username">
    </div>
    <div>
      <label>Email:</label>
      <input type="text" ng-model="user.email">
    </div>
    <div>
      <label>Password:</label>
      <input type="password" ng-model="user.password">
    </div>
    <div>
      <label>Name:</label>
      <input type="text" ng-model="user.name">
    </div>
    <br/>
   </div>
</div>
<div>
   <button class="smallbutton" ng-click="addUser()">Click here to add another user if applicable….</button>
</div>
  • 0
    Работает отлично, спасибо большое
  • 0
    Пожалуйста.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню