我想知道如何在AngularJS网格中添加一个特定列值作为文本框。
所以,我正在实现一个AngularJS网格,如下所示:
<div>
<table>
<tr>
<th>
<td>Customer Account Number</td>
<td>Customer Name</td>
</th>
</tr>
<tbody>
<tr ng-repeat="item in data">
<td>{{item.CustomerAccNumber}}</td>
<td>{{item.CustomerName}}</td>
</tr>
</tbody>
</table>
<input type=button value="Add Row" ng-click="Add()"/>
因此,在方案2中会发生一些事情:
有人可以帮我弄清楚如何将文本框放入网格中的某个特定列吗?
可以按照我实施网格的方式完成吗?
我不想使用nggrid。
答案 0 :(得分:0)
我会做这样的事情:
首先,在您的控制器中,在Add()
函数中,当您推送新行时,添加isEditable
等字段,以便区分UI中新添加的行。 / p>
$scope.Add = function() {
$scope.data.push({
'CustomerAccNumber': 1,
'CustomerName': '',
'isEditable': true // field to identify new row
})
}
然后在你的标记中,让flg可用,你可以使用ngIf,如下所示:
<tr ng-repeat="item in data">
<td ng-if="!item.isEditable">{{item.CustomerAccNumber}}</td>
<td ng-if="item.isEditable">
<input type="text" ng-model="item.CustomerAccNumber">
</td>
<td>{{item.CustomerName}}</td>
</tr>
应获取CustomerAccount数字
就您的第三项而言,当用户点击开箱时,您可以使用ngBlur拨打电话:
1)在控制器中定义一个功能,以便在用户离开时调用。
$scope.doSomethingWithAccNumber() {
// $http call, etc
}
2)更新文本框以使用ngBlur指令,该指令将在用户点击时触发。
<td ng-if="item.isEditable">
<input type="text"
ng-model="item.CustomerAccNumber"
ng-blur="doSomethingWithAccNumber()">
</td>
如果您希望其他键触发此操作,您也可以使用ngKeydown。很好地概括了这一点的使用here。例如,您希望在输入中添加ng-keydown="$event.keyCode === 13 && doSomethingWithAccNumber()"
以在Enter
上触发。