2016-03-29 91 views
2

我有一張桌子,其中1 row必須鏈接到其他東西。AngularJs重定向

現在我有這樣的:

<table class="table table-hover"> 
    <thead> 
    <tr> 
     <th>Functie</th> 
     <th>Bedrijf</th> 
     <th>Naam</th> 
     <th>Achternaam</th> 
    </tr> 
    </thead> 
    <tbody ng-show="!homeCtrl.loading"> 
    <tr ng-repeat="employee in homeCtrl.employees" ng-click="homeCtrl.redirectToShow(employee.EmployeeId)"> 
     <td>{{ employee.Role }}</td> 
     <td>{{ employee.Company }}</td> 
     <td>{{ employee.FirstName }}</td> 
     <td>{{ employee.LastName }}</td> 
     <td ng-show="homeCtrl.canEdit" ng-click="homeCtrl.redirectToEdit(employee.EmployeeId)"><span class="glyphicon glyphicon-pencil"></span></td> 
    </tr> 
    </tbody> 
</table> 

最後td有鏈接到別的東西。但現在所有的鏈接都是一樣的,我怎麼能管理它?

(In the ng-click method I redirect) 
+0

你有很多選擇,接受回答..或至少對任何人的答覆,如果有什麼不幫助你..謝謝:) –

+0

@PankajParker是的,你是對的,在這裏很好的幫助! – Jamie

+0

很高興知道,你迴應了它。Thnaks :-) –

回答

1

,我們在您當前實現兩個問題。

  1. 您可以使用$last來綁定click事件以觸發最後一個元素。我在homeCtrl.redirectToEdit函數調用之前放了$last,因爲這將確保直到$last(出現最後一個元素ng-repeat)行被點擊,然後只有它會調用下一個函數。

    ng-click="$last && homeCtrl.redirectToEdit(employee.EmployeeId);$event.stopPropagation()" 
    
  2. 我認爲你正面臨着與event冒泡,在那裏你必須點擊綁定到子和父元素事件的問題。所以當單擊事件發生在內部元素內時,它會將該事件傳播給其父項。爲了避免這種不必要的行爲,您應該通過在內部td上調用$event.stopPropagation()來阻止內部事件冒泡。

1

您可以使用$last(布爾),並通過作爲參數傳遞給你的NG-點擊功能,那麼如果是最後一個元素或不定向,具體取決於用戶。

<td ng-show="homeCtrl.canEdit" ng-click="homeCtrl.redirectToEdit(employee.EmployeeId, $last)"><span class="glyphicon glyphicon-pencil"></span></td> 
1

試試這個

<td ng-show="$last && homeCtrl.canEdit" ng-click="homeCtrl.redirectToEdit(employee.EmployeeId)"><span class="glyphicon glyphicon-pencil"></span></td> 
1

您可以使用$last和條件:

<td ng-show="homeCtrl.canEdit && !$last" ng-click="homeCtrl.redirectToEdit(employee.EmployeeId)"><span class="glyphicon glyphicon-pencil"></span></td> 
<td ng-show="homeCtrl.canEdit && $last" ng-click="homeCtrl.somethingDifferent(employee.EmployeeId)"><span class="glyphicon glyphicon-pencil"></span></td> 
1

理想情況下,你應該設置NG單擊爲每td因爲設置了ng-click充分行將優先於任何ng-click小號在裏面。試試這個:

<table class="table table-hover"> 
<thead> 
<tr> 
    <th>Functie</th> 
    <th>Bedrijf</th> 
    <th>Naam</th> 
    <th>Achternaam</th> 
</tr> 
</thead> 
<tbody ng-show="!homeCtrl.loading"> 
<tr ng-repeat="employee in homeCtrl.employees"> 
    <td ng-click="homeCtrl.redirectToShow(employee.EmployeeId)">{{ employee.Role }}</td> 
    <td ng-click="homeCtrl.redirectToShow(employee.EmployeeId)">{{ employee.Company }}</td> 
    <td ng-click="homeCtrl.redirectToShow(employee.EmployeeId)">{{ employee.FirstName }}</td> 
    <td ng-click="homeCtrl.redirectToShow(employee.EmployeeId)">{{ employee.LastName }}</td> 
    <td ng-show="homeCtrl.canEdit" ng-click="homeCtrl.redirectToEdit(employee.EmployeeId)"><span class="glyphicon glyphicon-pencil"></span></td> 
</tr> 
</tbody> 

這就是說,如果你想保持你的標記事情是這樣的,你可以看看有關停止冒泡這個StackOverflow的答案:Howto: div with onclick inside another div with onclick javascript