2014-09-02 53 views
0

我有一個問題$ scope。$ watch call,當它顯然應該被調用。 我有我的HTML文檔中一個分頁程序(引導程序UI):

<pagination total-items="paginatorTotalItems" items-per-page="paginatorItemsPerPage" 
    page="paginatorCurrentPage" max-size="paginatorSize" class="pagination-sm" 
    boundary-links="true"> 
</pagination> 

的某一部分,在我的項目顯示(對他們來說,我需要一個分頁程序):

<div ng-show="reviews" ng-repeat="review in reviewsPerPage"> 
... 
</div> 

和控制器:

... 
$scope.reviewsArray = []; 
$scope.paginatorItemsPerPage = 1; 
$scope.paginatorSize = 3; 
$scope.reviewsPerPage = []; 
$scope.paginatorTotalItems = $scope.reviews.result.total; 

     //restangular object to Array 
     for (var i = 0; i < $scope.paginatorTotalItems; i++) { 
      $scope.reviewsArray.push($scope.reviews.result.reviews[i]); 
     }; 

     $scope.paginatorCurrentPage = 1; 

$scope.$watch('paginatorCurrentPage', function() { 
       var begin = (($scope.paginatorCurrentPage - 1) * $scope.paginatorItemsPerPage); 
       var end = begin + $scope.paginatorItemsPerPage; 

       console.log($scope.paginatorCurrentPage); 
       console.log(begin + ' ' + end); 

       $scope.reviewsPerPage = $scope.reviewsArray.slice(begin,end); 

       console.log($scope.reviewsPerPage); 
}); 

因此,使長話短說,我有一個變量paginatorCurrentPage,我通過單擊我的<pagination>號改變,但$表不發生反應。這個$ watch只被調用一次:當我給它賦值1(在從我的restangular對象中創建一個數組之後)之後,$ watch不再被調用。 還有我cheking如何paginatorCurrentPage改變我的html文件:

<p>Current : {{paginatorCurrentPage}}</p> 

而且它的實際工作,這個變量變化的時候將我的分頁按鈕,而是$手錶不叫。

對不起,我的英語,謝謝!

編輯:

我在分頁程序更新了我的引導界面,所以現在我用ng-model istead的page。我意識到變量paginatorCurrentPage只在我看來改變,但在控制器中我仍然有我的默認$scope.paginatorCurrentPage = 1。問題依然存在。

+0

'paginatorCurrentPage'在哪裏被修改?你能告訴我們修改'paginatorCurrentPage'的代碼嗎? – Callebe 2014-09-02 20:21:07

+0

http://angular-ui.github.io/bootstrap/#/pagination < - 這沒有定義'page'屬性。相反,它使用'ng-model'。另外,你可以綁定一個'ng-change'事件,而不需要$ watch。 – Malk 2014-09-02 20:23:46

+0

@Callebe,它通過點擊我的分頁按鈕進行修改:page =「paginatorCurrentPage」。 – xSaber 2014-09-02 20:31:07

回答

0

感謝您的所有意見。問題是關於範圍。我改寫了NG-模型分頁程序:ng-model="paginatorPage.current"

,改變

$scope.paginatorCurrentPage = 1; 

$scope.paginatorPage = {current : 1}; 

並感謝@Leo Farmer有關指示點建議。