AngularJS:将元素添加到<李>动态地
AngularJS: Add Elements to <li> dynamically
我无法在单击"添加"按钮时填充列表。问题是,当我再次更改文本字段时,我的列表数据会发生更改(绑定),如何避免这种情况?
HTML
<div class="control-group">
<label class="control-label" for="projectManager">Project Manager(s)</label>
<div class="row controls" >
<input type="text" class="span3" placeholder="Manager name" ng-model="pm.name">
<input type="text" class="span2" placeholder="Manager type" ng-model="pm.type">
<button type="button" ng-click="addManagersForm()"> Add </button>
</div>
<div class="row controls" >
<ul><li ng-repeat="tPm in pms">{{tPm.name}}</li></ul>
</div>
</div>
JS
app.controller('myContrl',["$scope", "$http", function($scope, $http) {
$scope.pms = [];
$scope.addManagersForm = function() {
console.log($scope.pm);
$scope.pms.push($scope.pm);
};
}]);
发生这种情况是因为您正在将$scope.pm
对象推入数组,并且该对象已绑定到表单中。
只需创建一个新对象,您就可以了:
$scope.addManagersForm = function() {
var pm = $scope.pm;
$scope.pm = {}; // Do this to clean up the form fields
$scope.pms.push(pm);
};
这是因为实例是通过引用传递的。你可以使用angular.copy创建它的深度副本。
参见此示例Plunker:http://plnkr.co/edit/d8HwXzTBK61sMuwLollW
更新后的代码:
HTML页面
<body ng-app="app" ng-controller="myContrl">
<div class="control-group">
<label class="control-label" for="projectManager">Project Manager(s)</label>
<div class="row controls" >
<input type="text" class="span3" placeholder="Manager name" ng-model="pm.name">
<input type="text" class="span2" placeholder="Manager type" ng-model="pm.type">
<button type="button" ng-click="addManagersForm(pm)"> Add </button>
</div>
<div class="row controls" >
<ul><li ng-repeat="tPm in pms">{{tPm.name}}</li></ul>
</div>
</div>
JavaScript
angular.module('app', []).controller('myContrl',["$scope", "$http", function($scope, $http) {
$scope.pms = [];
$scope.addManagersForm = function(pm) {
console.log(pm);
$scope.pms.push(angular.copy(pm));
};
}]);
相关文章:
- 如何通过<输入>动态
- 如何动态生成X数量的新<输入>基于a<选择>(Angular2内)
- 使用动态<选择>以显示<输入类型=“;文本>
- 如何动态修改<选择>在实体化css框架中
- 我正试图动态地拉动<h3>元素,并将它们放在选择列表中
- 将URL路径与<a>attr('href')来动态更新.active类
- 使用加载时的Codeigner动态javascript->看法
- 如何将JavaScript动态添加到</身体>标签
- 添加<tr>元素到动态表,动态不刷新页面,php-jquery
- 动态生成<选择>未显示已排序列表中的第一个项目
- 动态创建<李>元素
- AngularJS:将元素添加到<李>动态地
- 如何获得<text区域>使用jQuery动态获取值
- 如何动态插入<optgroup>进入列表框
- 动态扩展<ul>在jquerymobile中丢失格式
- 填充<选择>动态地从数据库中获取
- 获取<输入类型=“;文本“>它是在模态中动态创建的
- 如何动态更改<标题>标签
- jQuery,计数动态添加的数量<李>在<ul>
- 将用户输入动态地附加到<script src=“">来自Java Script中的文本框