2014-09-24 83 views
2

可能是整個佈局錯了,但這裏是我的情況,我正在使用Angular ui-router的Meanjs.org堆棧。Angular ui路由器重載ng-include外部ui-view

我有一個佈局是這樣的:

<div data-ng-include="'/modules/core/views/header.client.view.html'"></div> 

<div id="page-content" class="clearfix" fit-height> 
    <div id="wrap" data-ui-view="" class="mainview-animation"></div> 
</div> 

現在我需要重新加載控制器header.client.view.html內部時,我改變$狀態。

例如,當我在登錄頁面並登錄時,我需要重新加載頭控制器,但由於ui-router僅使用相對模板更改了ui-view部件,因此無法執行此操作:

// this change only ui-view, doesn't care about the ng-include before  
state('home', { 
    url: '/', 
    templateUrl: 'modules/core/views/home.client.view.html', 
}); 

我發現的可能性更多的UI視圖添加到狀態,所以我可以用於報頭添加的UI-視圖2代替使用納克 - 包括但此是指具有在每個狀態下的UI的視圖2。

有什麼建議嗎?

回答

2

每次狀態改變時,您可能不需要「重新加載控制器」,而是讓您的控制器對動態狀態變化作出反應並更新其屬性。

查看ui路由器$stateChangeSuccess event

2

首先,在你需要聽@Matti Virkkunen 這是更好地傾聽你的頭的控制器的狀態「$ stateChangeSuccess」

所以,你只需要聲明一個控制器,你的頭。並在你的頭控制器添加這樣的東西。

$scope.$on('$stateChangeSuccess', function() { 
    // Do what you want for example check if the current state is home with $state.is('home'); 
}); 

不要忘了在你的模板來聲明控制器

<div data-ng-controller="HeaderController" data-ng-include="'/modules/core/views/header.client.view.html'"></div> 

<div id="page-content" class="clearfix" fit-height> 
    <div id="wrap" data-ui-view="" class="mainview-animation"></div> 
</div>