2013-08-20 156 views
0

最近我遇到了一個問題,我需要更新頁面使用角度,更新網址,但不重新加載頁面。困惑?讓我進一步解釋。我有一張數據表(使用ng-grid),我想要它,所以當我點擊第1行時,angular打印出一個,並在不重新加載頁面的情況下將URL更改爲'currentUrl/1'。然後我點擊第4行,打印出4,並將網址更改爲'currentUrl/4'。這是可能的角度來做到這一點。爲了使我的頁面不會重新加載每次單擊某一行的時候,我把下面的Angularjs/Javascript不要刷新頁面,但更改網址和更新屏幕

var lastRoute = $route.current; 
    $scope.$on('$locationChangeSuccess', function(event) { 
     $route.current = lastRoute; 
    }); 

它做我想要的一切,改變網址,網頁不刷新,但現在的角度沒有更新這個數字。我究竟做錯了什麼?

+0

檢查:https://github.com/angular-ui/ui-router –

+0

謝謝,但我期待的修復必須是穩定的,並且在文檔中,它說,它不是。 –

回答

0

這將有助於查看打印出數字的代碼部分,但是您更改URL而不更新路由的代碼看起來很好。

沒有更多信息,在黑暗中拍攝的是您的控制器正在更新$scope變量,但此更新沒有被Angular應用。

嘗試包裹變量更新,像這樣:

$scope.$apply(function() { 
    $scope.numberToPrint = newNumber; 
}); 

背後呼喚$scope.$apply的基本想法是,你必須手動哄角到更新聽變量的任何綁定。雖然這通常應該被照顧,但可能發生的情況是,通過防止發生路由變化,您實際上並沒有使用Angular消化新變量。

Here is an article which can explain $apply better.

+0

因爲我不完全瞭解發生了什麼,所以我無法提供工作示例代碼。但是,$ scope。$ apply不起作用,因爲'$ digest已在進行中'錯誤。我認爲,當我使用locationChangeSuccess運行我的應用程序時,它不會運行我的$ watch功能(下一個評論),但是當我將程序中的位置信息註釋掉時,它會運行$ watch函數(將console.log那裏)。這是可能的信息嗎? –

+0

$ scope。$ watch(function(){return selectedPartFactory.part.id},function(n){$ http.get(afHttp.baseUrl +「/」+ $ scope.grid.name +「/」+ n ) .success(功能(數據){ //$log.log($scope.grid.name); $ scope.grid.data =數據; }) ; }); –