我有一個關於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