2014-11-14 12 views
1

看看下面的分頁HTML和中繼器,我必須移動:分頁中繼器有一個活躍的類時,分頁按鈕點擊

<ul id="ProductListPagination" class="pagination"> 
    <li class="disabled"><a href="#"><span aria-hidden="true">&laquo;</span><span class="sr-only">Previous</span></a></li> 

    <li ng-repeat="n in PageCount" ng-class="{active: n==1}"><a ng-click="Paginate(n)" href="#"><% n %> <span class="sr-only">(current)</span></a></li> 
</ul> 

如何去中繼器上移動active上課的時候分頁按鈕之一按下...有一個內置的角度的方式...

方面:

enter image description here


如果角度沒有內置的方式,我該如何將dom元素傳遞給Paginate(n)函數?

我有接收功能:

$scope.Paginate = function(obj, page){ 

    // Remove currently active button's active class 
    $("#ProductListPagination li.active").each(function() { 
     $(this).removeClass("active"); 
    }); 
    // Add to element just clicked on 
    $(obj).parent().addClass("active"); 
    ... 

} 

和HTML去與,你會看到我試圖傳遞this

<li style="cursor:pointer" ng-repeat="n in PageCount" ng-class="{active: n==1}"><a ng-click="Paginate(this, n)" href="#"><% n %> <span class="sr-only">(current)</span></a></li> 

但是,這不起作用,因爲這不是一個DOM元素。

回答

2

指令

這可以通過指令來完成,這些讓你自定義的標記,即定義。一個元素,一個屬性名稱,它甚至可以掛鉤到類名上。然後從那裏你可以附加各種東西。

https://egghead.io/lessons/angularjs-first-directive

所以,你可以做一個 「分頁」 指令。

,並且將被用於類似:

<my-pagination pages="arrayInScope">

然後你可以提供什麼需要是無論是在此元素或更換外部模板或標記(EWW)的連串這個元素。

另一種解決方案

但是,這是一個快速的方法,我想它並不真的需要更多的超過無論如何複雜。

Example on CodePen

從我打電話的PAGINATE函數解析NG-repeat的提供$index的標記。在js中的paginate函數中,然後設置它。

由於角度摘要:ng-class="{ active : page == current }"然後將重新評估。

但是,如果您出於某種原因需要訪問元素,請使用指令。使用Angular時最好避免使用jQuery,如果它只是一個類更改或可見性切換等。那麼它最好讓Angular爲它做''

希望有所幫助。

+0

謝謝你,當我回來工作時,我會試試這個! – Jimmyt1988 2014-11-15 19:19:32

+0

像魅力一樣工作。謝謝。我的頭腦當然是過於複雜了。 – Jimmyt1988 2014-11-17 10:28:13

相關問題