Как получить выбранную строку из таблицы в angularjs - PullRequest
0 голосов
/ 11 сентября 2018

Я хотел бы получить значения выбранной строки из таблицы. Это то, что я пробовал до сих пор, и прикрепленный plunkr.https://plnkr.co/edit/QDPh4q0hQdlW09orayyL?p=preview

<html ng-app="plunker">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + 
document.location + '" />');</script>
<link rel="stylesheet" href="style.css" />
<script data-require="angular.js@1.2.x"src="https://code.angularjs.org/1.2.28/angular.js" data-semver="1.2.28"></script>
<script src="script.js"></script>
</head>

<body ng-controller="MainCtrl">
<table style="width:100%">
<tr>
<th>Firstname</th>
<th>Lastname</th> 
<th>Age</th>
</tr>
<tr ng-click="getData()">
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
<tr>
<td>Eve</td>
<td>Jackson</td>
<td>94</td>
</tr>
<tr>
<td>John</td>
<td>Doe</td>
<td>80</td>
</tr>
</table>
</body>

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Попробуйте это

  $scope.getData=function(event){
    console.log(event.target);
  }
<tr ng-click="getData($event)">
<td>Jill</td>
<td>Smith</td>
<td>50</td>
</tr>
0 голосов
/ 11 сентября 2018

angular.module("MyApp",[])
.controller("MyCtrl", function($scope){
var table = document.getElementsByTagName("table")[0];
var tbody = table.getElementsByTagName("tbody")[0];
tbody.onclick = function (e) {
    e = e || window.event;
    var data = [];
    var target = e.srcElement || e.target;
    while (target && target.nodeName !== "TR") {
        target = target.parentNode;
    }
    if (target) {
        var cells = target.getElementsByTagName("td");
        for (var i = 0; i < cells.length; i++) {
            data.push(cells[i].innerHTML);
        }
    }
    alert(data);
};
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular.min.js"></script>
<div ng-app="MyApp">
  <div ng-controller="MyCtrl">
		<table border="1">
			<thead>
				<tr>
					<th>Firstname</th>
					<th>Lastname</th> 
					<th>Age</th>
				</tr>
			</thead>
			<tbody>
				<tr>
					<td>Jill</td>
					<td>Smith</td>
					<td>50</td>
				</tr>
				<tr>
					<td>Eve</td>
					<td>Jackson</td>
					<td>94</td>
				</tr>
				<tr>
					<td>John</td>
					<td>Doe</td>
					<td>80</td>
				</tr>
			</tbody>
		</table>  
  </div>
</div>
0 голосов
/ 11 сентября 2018

Лучше итерировать каждый person через ng-repeat и передавать их в вашу функцию явно вместо жесткого кодирования в HTML и, таким образом, работы с DOM:

$scope.people = [{
    name: 'Jill',
    lastName: 'Smith',
    age: 50
  },
  ....
]
$scope.getData = function(person) {
  console.log('Selected person is ' + person.name);
}
<table style="width:100%">
  <tr>
    <th>Firstname</th>
    <th>Lastname</th>
    <th>Age</th>
  </tr>
  <tr ng-repeat='person in people' ng-click="getData(person)">
    <td>{{person.name}}</td>
    <td>{{person.lastName}}</td>
    <td>{{person.age}}</td>
  </tr>
</table>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...