2015-01-13 119 views
0

有沒有辦法重新初始化當前活動的控制器?Angularjs重新初始化主動控制器

這將幫助我在不添加額外的解決方法代碼的情況下從一個頁面切換到另一個頁面。

例如:

<div ng-controller='Blah as ex'> 
    {{ex.name}} 
</div> 

,並在控制器布拉赫的初始化函數,這個名字會從服務中檢索:

this.name = someService.name; 

因此,對於上面的例子,我想有一個將重新初始化我的Blah控制器的按鈕。

編輯:這只是一個基本的例子。

我正在使用瀏覽器的「狀態」,以便在控制器中恢復「後退」和「前進」數據。

有幾個案例,所以我試圖簡化其流程(目前的工作,而不是爲「漂亮」)

+0

爲什麼你不會只是再次打電話給服務?這將刷新$ scope值。我想會重新加載你的整個控制器比重新加載你想要更新的單個東西要慢很多。 –

+0

這是一個非常基本的例子。我的應用程序從一個頁面轉換到另一個頁面,我需要它重新加載它的控制器。 – PenguinSource

+0

爲了澄清,您將路由到不同的視圖,並且您希望每次查看每個視圖的控制器時都會刷新它的路由。 –

回答

0

將這樣的事情是一個可能的解決方案?使用route.reload重新加載頁面?

myapp.Controller('SampleController', function($location, $route) { 

    $scope.navTo = function(url) { 
    if ($location.path() === url) { 
     $route.reload(); 
    } else { 
     $location.path(url); 
    } 
    } 

}); 
+0

這是行不通的,但我會想到它會有兩個主要問題,首先它會重新加載所有的html標題,所以不僅僅是控制器。這會使它效率低得多。 第二個問題是SPA的路徑可能無法重新加載到正確的位置;當然,這是一個側面問題。 – PenguinSource

+0

我的意思是我能想到的唯一的其他事情就是在控制器中添加一個初始化函數,將所有值重置爲默認狀態。 –

+0

用不同的解決方案解決了我的問題。謝謝您的幫助。 – PenguinSource

相關問題