我正在从数据库服务器获取一些数据,并在我的 GUI 上以表格格式显示这些数据。我想在我的 GUI 设计中实现以下目标
(a) 表格中的任何单元格都应该是可编辑的,除了表格中的第一列。(b) 表的第一行,如果新添加到 GUI 以接受用户的新输入,则应免除上述规则,即第一行的所有列都应可编辑。
为此,我编写了以下代码。
HTML 代码
<tbody>
<tr ng-repeat="x in sensordata">
<td>
<input class="form-control" type="text" ng-model="x.name" placeholder="Sensor name" ng-readonly="namereadonly" ng-init="ctrl2.setReadOnly(x.name,$index)"/>
</td>
<td>
<input class="form-control" type="text" ng-model="x.unit" placeholder="Measurement Unit" required/>
</td>
<td>
<input class="form-control" type="text" ng-model="x.type" placeholder="Sensor Type" required/>
</td>
<td>
<input class="form-control" type="text" ng-model="x.periodicity" placeholder="Periodicity" required/>
</td>
<td>
<input class="form-control" type="text" ng-model="x.formula" placeholder="Formula" required/>
</td>
<td>
<input class="form-control" type="email" ng-model="x.vendor" placeholder="Email Id" required/>
</td>
</tr>
</tbody>
控制器代码如下。
this.setReadOnly = function(name,idx) {
console.log('name ' + name + ' idx ' + idx);
if (name === undefined || name === null || name === '') $scope.namereadonly = false;
if (name !== '' || name !== undefined || name !== null) $scope.namereadonly = true;
};
当我执行上面的代码时,所有行的第一列都按预期变得不可编辑。但是,当我向 GUI 添加新行(通过在同一控制器的另一个函数中的 sensordata 数组中添加新的空 JSON 对象)GUI 时,该行的第一列变得不可编辑,这不应该是第一个 if上述方法中的声明。我无法弄清楚为什么会这样。