这就是我正在做的事情:
我有 2 项服务,1 项用于侧边菜单,另一项用于主要内容。它们都被注入到控制器中。
$broadcast
为了处理我用来发送事件的跨服务调用。
工作得很好,代码很干净。
根据评论使用服务的附加信息
对于 sidemenu,我有一个共享菜单服务,这样所有控制器都可以使用相同的菜单。
maincontent 服务不必共享,但我使用它们是因为当控制器超出范围时服务不会丢失它们的数据。如果我不这样做,控制器将不得不使用其他机制来重新填充其数据。对我来说,服务可以处理它而无需编写任何代码
为了显示不同的视图,我使用以下主要布局 html
<div >
<!-- left menu -->
<div id="left" ng-include src="menu.view" ></div>
<!-- main content -->
<div id="main" ng-include src="maincontent.view"></div>
</div>
控制器
function myControllerCtrl($scope, $rootScope, menuService, maincontentService) {
$scope.menu = menuService;
$scope.maincontent = mainContentService
}
菜单服务
app.factory('menuService', ['$rootScope', function ($rootScope) {
var service = {
view: 'leftmenuview.html',
MenuItemClicked: function (data) {
$rootScope.$broadcast('menuitemclicked', data);
}
};
return service;
}]);
主要内容服务
app.factory('maincontentService', ['$rootScope', function ($rootScope) {
var service = {
view: 'maincontentview.html',
MenuItemClicked: function(data){
//handle updating of model based on data here
}
};
$rootScope.$on('menuitemclicked', function (event, data) { service.MenuItemClicked(data) });
return service;
}]);