в таблице с 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?
Во-первых, вы должны использовать контроллер в качестве синтаксиса, он автоматически помещает все в контроллер под 1 объект, что может вызвать проблемы с Angular. Но я не думаю, что проблема здесь.
Выбранный вами пользователь может быть равен выбранномуUser, но если они не указывают на одну и ту же ссылку, они не смогут. Если имена пользователей различны, я бы изменил ng-show = "user.username == selectedUser.username", и это должно работать нормально.
Возможно, кажется, что ваш код в основном правильный, но вы используете selectedUser
как функцию и как объектное представление пользователя. Возможно, ваша функция будет называться selectUser
которая установит $scope.selectedUser
. ng-show="user == selectedUser"
будет делать с тех пор.
Я лично не большой поклонник наличия условий в представлении, поэтому у меня будет функция в контроллере, которая выполняет сравнение и возвращает true или false.
function isSelectedUser(user) {
return user == $scope.selectedUser;
}
то вы можете просто использовать ng-show="isSelectedUser(user)"
Используйте JQuery для добавления <td>
в выбранную строку <tr>
. :nth-child()
- это простой способ выбрать строку.
var selectedRow = 2;
$('tbody tr:nth-child('+ selectedRow +')').append('<td><input type="submit" /></td>');
<td>
невозможны.