我有一个关于angularjs的查询,即我有一个表,其中有行,但这些行是由用户动态插入的。这意味着如果我有一个公司拥有多个所有者,那么我允许他们添加尽可能多的所有者,只需点击与文本框放置的添加按钮(即姓名,电子邮件,数字文本框) 我已经使用' ng-repeat',以便可以逐个动态地添加所有者列表。从数据库获取值时,它工作得很好,但当我尝试通过单击“添加”按钮来添加值时,它将新行添加了所有文本框,但是与上一行相同。我认为这是因为我已经使用ng-model来链接数据..但是那么这是我可以绑定数据的唯一选择。是否有人对此问题有解决方案。请帮帮我。 预先感谢您 我分享代码示例为了更好的理解,用动态数据处理ng-repeat
JSP代码:
<tbody id="insertionRow">
<tr>
<th>#</th>
<th class="required">Name</th>
<th>Email</th>
<th>Phone No</th>
<th>Add</th>
<th>Delete</th>
</tr>
<tr data-ng-repeat="c in ctrl.client.clientOwnerVOList">
<td>{{$index + 1}}</td>
<td class="col-lg-3"><input type="Text"
class="form-control"
data-ng-model="c.clientOwnerName"
name="clientOwnerName{{$index + 1}}" id="Name">
</td>
<td class="col-lg-4"><input type="Email"
class="form-control"
data-ng-model="c.clientOwnerEmail"
name="clientOwnerEmail{{$index + 1}}" id="Email"></td>
<td class="col-lg-3"><input type="Text"
class="form-control"
data-ng-model="c.clientOwnerPhone"
name="clientOwnerPhone{{$index + 1}}" id="PhoneNo"></td>
<td>
<button type="button"
data-ng-click="insert();"
class="btn btn-sm btn-default">
<i class="fa fa-plus fa-lg"></i>
</button></td>
<td><button type="button"
onClick="$(this).closest('tr').remove();"
class="btn btn-sm btn-default">
<i class="fa fa-trash fa-lg "></i>
</button></td>
</tr>
</tbody>
AngularJS控制器代码:
$scope.insert = function(){
var tableRow ="<tr data-ng-repeat='c in ctrl.client.clientOwnerVOList'>"+
"<td>"+i+"</td>"+
"<td class='col-lg-3'><input type='Text' class='form-control' data-ng-model='c.clientOwnerName' name='clientOwnerName{{$index + 1}}' ></td>"+
"<td class='col-lg-4'><input type='Email' class='form-control' data-ng-model='c.clientOwnerEmail' name='clientOwnerEmail{{$index + 1}}'</td>"+
"<td class='col-lg-3'><input type='Text' class='form-control' data-ng-model='c.clientOwnerPhone' name='clientOwnerPhone{{$index + 1}}' ></td>"+
"<td><button type='button' data-ng-click='insert()' class='btn btn-sm btn-default'><i class='fa fa-plus fa-lg'></i></button></td>"+
"<td><button type='button' class='btn btn-sm btn-default' onClick=$(this).closest('tr').remove();><i class='fa fa-trash fa-lg '></i></button></td>"+
"</tr>";
var compiledString = $compile(tableRow)($scope);
$("#insertionRow").append(compiledString);
i++;
};
和客户对象如下
self.client= {
clientID:'',
clientName:'',
clientDescription:'',
clientAddressLine:'',
clientContactPersonPhone:'',
createdOn:'',
astUpdatedOn:'',
country:'',
state:'',
city:'',
isDeleted:'',
clientOwnerVOList: [
{
clientOwnerID:'',
createdOn:'',
isDeleted:'' ,
clientOwnerName:'',
clientOwnerPhone:'',
clientOwnerEmail:''
}
]
}
概念是完全错误的。将一个新对象推送到'client.clientOwnerVOList',并且将为该数组中的新对象创建视图中的行。这是角度工作的基本部分...它根据您的控制器型号为您管理视图 – charlietfl
您可以用简单的方法完成此任务!您可以使用隔离作用域创建自定义指令,并传递它的值。 –
@Charlietfl我理解你的观点,但根据我的知识,当我点击删除按钮时,相应的对象应该被删除。,你能建议我怎么做到这一点? – Vish