0

在带有 ng-repeat 的表格中,是否可以仅将一个单元格添加到一行?

在我的代码中:

<tbody>
          <tr ng-repeat="user in users ng-click="selectUser(user)">
            <td>{{user.username}}</td>
            <td><input type="text"....></td>
            <td><input type="checkbox"...></td>
            <td><input type="submit" ...  ng-show="user==selectedUser" /></td>
          </tr>
        </tbody>

在这段代码中,我希望最后一个td只出现在选定的行上并且不影响其他行,这可能吗?或者它是 JS 或 CSS 的东西?

4

3 回答 3

1

使用 JQuery 将 追加到<td>所选行上<tr>。这:nth-child()是一种选择行的简单方法。

var selectedRow = 2;
$('tbody tr:nth-child('+ selectedRow +')').append('<td><input type="submit" /></td>');
于 2016-01-08T01:36:48.207 回答
1

有可能,您的代码似乎大部分是正确的,但是您将selectedUser其用作函数和用户的对象表示。也许你的函数会被调用selectUser,它会设置$scope.selectedUser. ng-show="user == selectedUser"从那时起就会使。

我个人不太喜欢在视图中设置条件,所以我会在控制器中有一个函数来进行比较并返回真或假。

function isSelectedUser(user) {
    return user == $scope.selectedUser;
}

那么你可以使用ng-show="isSelectedUser(user)"

于 2016-01-08T01:29:42.453 回答
1

首先,您应该使用控制器作为语法,它会自动将控制器中的所有内容放在 1 个对象下,这可能会导致 Angular 出现问题。但我不认为这是这里的问题。

您选择的用户可能等于 selectedUser,但如果他们没有指向相同的引用,他们将无法。如果用户名不同,我会更改 ng-show="user.username == selectedUser.username" 并且应该可以正常工作。

于 2016-01-08T02:20:18.463 回答