2013-07-15 17 views
13

Mam stolik w stylu z bootstrapem. Treść tej tabeli jest wypełniana przy użyciu Angular.js. Jak zrobić kliknięcie wiersza, aby wywołać funkcję w zakresie?Klikalny wiersz programu startowego o kątowym

Poniższy kod nie działa dla mnie (NG kliknij część):

Tabela:

<table class="table table-hover"> 
     <thead> 
      <tr> 
       <th>Name</th> 
       <th>Status</th> 
      </tr> 
     </thead> 
     <tbody> 
      <tr ng-repeat="ingredient in ingredients" ng-click="setSelected({{$index}});"> 
       <td>{{ ingredient.name }}</td> 
       <td>{{ ingredient.status }}</td> 
      </tr> 
     </tbody> 
    </table> 

Kontroler:

$scope.setSelected = function(index) { 
    $scope.selected = $scope.ingredients[index]; 
    console.log($scope.selected); 
}; 
+2

Chyba po prostu trzeba usunąć {{}} około $ indeks, ale powinieneś opisać lepiej, w jaki sposób zawodzi. Na przykład pokazujesz, że logujesz się, ale nie dane wyjściowe dziennika. – shaunhusain

+0

Nic się nie dzieje, nie ma logowania. Ale {{$ index}} jest renderowane do wartości numerycznej. – Klaasvaak

Odpowiedz

42

Sugestia i fiddle:

<tr ng-repeat="ingredient in ingredients" ng-click="setSelected();"> 
    <td>{{ ingredient.name }}</td> 
    <td>{{ ingredient.status }}</td> 
</tr> 

<script> 
var myApp = angular.module('myApp',[]); 

function MyCtrl($scope) { 

    $scope.ingredients = [ 
     {'name': 'potato'}, 
     {'name': 'tomato'} 
    ]; 

    $scope.setSelected = function() { 
     $scope.selected = this.ingredient; 
     console.log($scope.selected); 
    }; 

} 
</script> 
+0

skrzypce nie wydają się być poprawne –

+0

Zaktualizowałem, dzięki! – marko

+8

Aby odłączyć kontroler i szablon, możesz użyć 'ng-click =" setSelected (składnik); "' i '$ scope.setSelected = function (item) {...};'. –

2

Można po prostu przekazać składnik w argumencie

ng-click = "setSelected (składnik)"

i kontroler

$scope.setSelected = function(my_ingredient) { 
     $scope.selected = my_ingredient; 
     console.log($scope.selected); 
    }; 
1

HTML:

<table class="table-hover"> 

CSS:

.table-hover > tbody > tr:hover { 
    background-color: #f5f5f5; 
} 

A jeśli również Siema wykonane selekcyjnego tr:

HTML:

<tr ng-click="doSomething()"> 

CSS:

tr[ng-click] { 
    cursor: pointer; 
} 

View JSFiddle Sample

Powiązane problemy