可能这是整个布局错了,但这是我的情况,我正在使用带有Angular ui-router的Meanjs.org堆栈。
我有这样的布局:
<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部分:< / p>
// 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-view,所以我可以使用ng-include为头添加ui-view2,但这意味着在每个状态上都有ui-view2。
有什么建议吗?
答案 0 :(得分:2)
您可能不需要重新加载控制器&#34;每次状态改变时,都会让控制器动态响应状态变化并更新其属性。
查看ui-router $stateChangeSuccess
event。
答案 1 :(得分:2)
首先,你需要听@Matti Virkkunen 用#34; $ stateChangeSuccess&#34;
监听标题控制器中的状态会更好所以你只需要为你的标题声明一个控制器。在你的标题控制器里面添加这样的东西。
$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>