仅将表数据添加到ng-repeat上的一行

时间:2016-01-08 01:23:46

标签: angularjs angularjs-ng-repeat angularjs-ng-show

在具有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的东西?

3 个答案:

答案 0 :(得分:1)

有可能,您的代码似乎大部分都是正确的,但您使用selectedUser作为函数和用户的对象表示。也许你的函数会被称为selectUser,它会设置$scope.selectedUser。从那以后ng-show="user == selectedUser"会成功。

我个人并不喜欢在视图中有条件,所以我在控制器中有一个函数进行比较并返回true或false。

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

然后您可以使用ng-show="isSelectedUser(user)"

答案 1 :(得分:1)

使用JQuery在所选行<td>上附加<tr>:nth-child()是您选择行的简便方法。

var selectedRow = 2;
$('tbody tr:nth-child('+ selectedRow +')').append('<td><input type="submit" /></td>');

答案 2 :(得分:1)

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

您选择的用户可能等于所选用户,但如果他们没有指向相同的参考,他们就无法做到。如果用户名不同,我可以更改ng-show =&#34; user.username == selectedUser.username&#34; 这应该可以正常工作。