我不确定我是否以正确的方式做我需要的东西......我有2个控制器:
SiteMenuCntl 和 DashboardCntl
SiteMenuCntl绑定到UL标记,它是网站的菜单。默认情况下它是隐藏的,并且在凭据验证和加载DashboardCntl之后,菜单应该是可见的。
我试过了:
app.controller('SiteMenuCntl', ['$scope', 'site', 'security', '$log', function ($scope, site, security, $log) {
$scope.visibility = "hidden";
$scope.$on('showTree', function () {
console.log("event fired"); //never fired :-(
$scope.visibility = "";
});
}]);
app.controller('DashboardCntl', ['$scope', function ($scope) {
$scope.$emit('showTree');
}]);
但事件showTree永远不会被解雇。我哪里做错了?有没有更好的方法呢?
答案 0 :(得分:1)
我猜你的SiteMenuCntl
在DashboardCntl
的范围树下,所以当$emit
向上触发(向$rootScope
)时,它不会到达{{ 1}}。
请尝试使用SiteMenuCntl
。这会从树的顶部向下触发任何监听范围。
答案 1 :(得分:0)
有一种更简单的方法可以做到这一点;
为什么不在控制器中设置布尔值$scope.showSiteMenuCntl=false;
,然后当你想要显示它时,你去$scope.showSiteMenuCntl=true;
然后在你的HTML中你去;
<ul ng-controller="SiteMenuCntl" ng-show="showSiteMenuCtrl"></ul>