我是新来的。我想在 viewDashboard
Controller 卸载之前知道,但我不确定如何检测到它。
从左侧菜单 Template.fn_change_view()
更改 Template.active_view
到事件 View 名称后单击项目的基本操作,例如'dashboard',它显示/隐藏一些 view-
元素指令。
但是在 inactive 指令 Controller 中编写的代码之后不再执行。在此之前,我需要从这个非事件 Controller 执行一个功能。有什么办法吗?
我希望我写得足够清楚,如果没有我会尝试解释得更好。
HTML:
index.html
<body class="template" ng-controller="TemplateController as Template" ng-class="{'on': Template.loged_in}">
<div class="mainFlexCont">
<left-menu class="menuFlexCont menu" ng-class="{'open': Menu.isMenuOpen}"></left-menu>
<!-- dashboard is visible only when Template.active_view is equal to 'dashboard' -->
<view-dashboard class="contentFlexCont" ng-if="Template.fn_active_view('dashboard')"></view-dashboard>
<!-- ... -->
</div>
<!-- ... -->
</body>
由 leftMenu 指令加载的 left-menu.html
<ul class="leftMenu">
<li>
<a class="toggleLeft" ng-click="Menu.isMenuOpen = !Menu.isMenuOpen" href>
<i class="fa fa-bars"></i> Toggle Menu
</a>
</li>
<!-- view change by clicking one of list items -->
<li ng-repeat="item in Menu.obj_items" ng-click="Template.fn_change_view(item.active)" ng-class="{'active' : Template.fn_active_view(item.active)}">
<a href>
<i class="fa {{item.icon}}"></i> {{item.label}}
</a>
</li>
</ul>
dashboard.html - 由 viewDashboard 指令加载
<div class="row">
<div class="col-xs-12">
<h1>Dashboard</h1>
</div>
</div>
<div class="row">
<div class="col-lg-7">
<chart-yearly class="chart"></chart-yearly>
</div>
</div>
JS:
chartYearly 指令
app.directive('chartYearly', function () {
return{
restrict: 'E',
templateUrl: 'views/chart-yearly.html',
controller: function ($scope) {
// how I can detect here before Yearly controler will be unloaded?
// when Template.active_view will change to different than dashboard
$scope.$watch('Template.active_view', function () {
// I need to execute this when this directive is active either before is unloaded
console.log(2);
});
},
controllerAs: 'Yearly'
};
最佳答案
作用域发出一个 $destroy
事件。请参阅 angular docs 中的事件部分.
$scope.$on('$destroy', function() {
// clean up stuff
})
关于javascript - Angular - 检测 Controller 何时为 `unloaded`,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27675490/