Model view controller 我如何设计一个angular应用程序来在控制器之间共享数据?

Model view controller 我如何设计一个angular应用程序来在控制器之间共享数据?,model-view-controller,google-maps,architecture,angularjs,Model View Controller,Google Maps,Architecture,Angularjs,我有一个web应用程序,用户可以在地图上创建事件和放置PIN,他/她还可以通过过滤器列表浏览事件。该地图由谷歌地图提供。因此,该应用程序包含3个主要组件:过滤器列表、新事件表单和映射 我在想我应该如何使用AngularJS构建它。下面是我正在尝试的和遇到的问题 我为事件表单创建了一个控制器,表示“newevent”的一个实例,它是用户创建的最新事件。用户成功提交表单并验证所有内容后,用户可以单击地图以放置pin。当用户点击pin时,它将显示表单中的事件信息。现在,drop-pin和pin-inf

我有一个web应用程序,用户可以在地图上创建事件和放置PIN,他/她还可以通过过滤器列表浏览事件。该地图由谷歌地图提供。因此,该应用程序包含3个主要组件:过滤器列表、新事件表单和映射

我在想我应该如何使用AngularJS构建它。下面是我正在尝试的和遇到的问题

我为事件表单创建了一个控制器,表示“newevent”的一个实例,它是用户创建的最新事件。用户成功提交表单并验证所有内容后,用户可以单击地图以放置pin。当用户点击pin时,它将显示表单中的事件信息。现在,drop-pin和pin-info函数都由Google的API处理,该API与控制器分离。但是,函数需要访问新事件的数据,这意味着我必须授予它访问控制器范围的权限


我可以提供对范围的访问,但我的直觉告诉我,允许访问外部功能不是正确的做法。那么,什么是更好的设计方法呢?或者,我可能错误地认为授予范围访问权是完全合法的,如果是这样的话,有人能给我一些关于潜在原因的见解吗?

对于任何对同一主题感兴趣的人,经过一些研究,我认为我找到了正确的解决方案。答案不是在控制器之外提供范围访问(我认为这很糟糕),而是创建一个保存公共数据的服务。需要访问数据的控制器可以要求此服务并访问它们

因此,在我的特殊情况下,我需要为GoogleMap包装器制作另一个控制器,它将使用Google的API初始化地图,并处理所有地图函数。然后,我创建了一个newEvent服务,它保存来自事件表单的数据,并且是事件控制器和映射控制器所必需的。事件控制器将向服务写入数据,而映射控制器将在适当的时间从服务中检索数据

但是后来我发现我的地图控制器中有太多的代码,它需要初始化很多地图选项,为地图对象实现一些实用程序回调,并用Google的API注册它们。因此,我进一步将所有这些功能考虑到另一个服务中。地图控制器将要求地图服务处理Google的API,随后地图服务将要求事件服务检索事件数据

现在我的应用程序看起来像这样:

newEventCtrl --- requires ---> eventService <------
                                                  |
mapCtrl --- requires ---> mapService ---requires---
services.js:

var newEventCtrl = function($scope, eventService) {
    $scope.newEvent = eventService;
    ...
}
...
module.service('eventService', function() {
    ...
    return {
        eventName: '',
        ...
        }
});
...
...
<input ng-model='newEvent.eventName'>
...
HTML:

var newEventCtrl = function($scope, eventService) {
    $scope.newEvent = eventService;
    ...
}
...
module.service('eventService', function() {
    ...
    return {
        eventName: '',
        ...
        }
});
...
...
<input ng-model='newEvent.eventName'>
...
。。。
...

我不喜欢直接公开服务数据,相反,我希望有一个好的API,但我没有找到一种方法将API函数绑定到输入字段,以便它们自动更新。欢迎提出任何建议。

您能给出一个快速的代码示例吗?“我想我知道你在说什么,但是如果没有歧义就容易了。”B谢谢你的回复,我已经把我的发现作为答案,欢迎你发表评论。