У меня есть эта форма:
<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 <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>
Это будет частью более крупной угловой формы, но я хочу, чтобы пользователь мог добавить несколько форм для добавления пользователя в форму. Так, например, если пользователь нажимает кнопку с идентификатором следующего пользователя, я хочу отобразить те же поля, но затем иметь различные значения для нового пользователя, когда будет происходить операция сохранения.
В общем, у меня есть два вопроса:
Чистый угловой способ сделать это - использовать функцию контроллера для добавления пользователей и 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
<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>
var newElm = $compile('<element></element>')($scope); var parent= document.getElementById('element'); angular.element(parent).append(newElm);
как то так будет работать.