2013-11-15 69 views
2

我使用AngularJS的locationhash()+ $ anchorScroll將選定的頁面元素移動到窗口頂部,一旦其內容通過Ajax加載進來。

JS: 在控制器:

 $scope.scrollTo = function (location) { 
      //Scroll to category head 
      $scope.categoryHead = "grouptitle-" + location; 
      $location.hash($scope.categoryHead); 
      $anchorScroll($scope.categoryHead); 
    }; 

在指令:

.directive('onFinishRender', function ($timeout) { 
     return { 
      restrict: 'A', 
      link: function (scope, element, attr) { 
       var scroll; 
       if (scope.$last === true) { 
        $timeout(function() { 
         //Scroll category to top of page after list has completed render 
         scroll = scope.scrollTo(scope.category); 
        }); 
       } 
      } 
     }; 

這給我的mysite.com/##grouptitle-2或類似的顯示網址,這看起來有點神祕。有沒有什麼辦法來配置這個錨點,使它只顯示一個散列值,或根本不修改地址欄的URL?

+0

具有相同的問題。你有沒有找到解決方案? – willlma

回答

-2

調用$anchorScrollscrollTo()功能後,你必須設置$location.hash('');

--->其次,你需要調用$ location.replace();函數從url中刪除'#'。 希望它有幫助:)

0

在你的$anchorScroll刪除參數。 anchorScroll會自動從$location.hash(<hash>)中獲取散列。

所以你的函數應該是這個樣子:

$scope.categoryHead = "grouptitle-" + location; 
$location.hash($scope.categoryHead); 
$anchorScroll(); 

如果DOM是動態更新的,然後包裹$location.hash$anchorScroll$timeout功能。

0

請執行以下步驟: 此$ location.hash($ scope.categoryHead); 添加

$anchorScroll(); 
 
$location.hash(''); 
 
$location.replace(); 
 

$ location.replace()函數將URL刪除 '#'。

0

執行以下步驟: 此$ location.hash($ scope.categoryHead); 添加

$anchorScroll(); 
$location.hash(''); 
$location.replace(); 

$ location.replace()函數將URL刪除 '#'。

相關問題