Angularjs 嵌套控制器、作用域和模型的最佳实践?
我已经看到(并阅读)了很多关于嵌套作用域如何工作的信息,我似乎已经很好地理解了它,并且经常使用/滥用它。我的问题不是它如何工作,而是如何最好地利用它。让我举个例子Angularjs 嵌套控制器、作用域和模型的最佳实践?,angularjs,angularjs-scope,Angularjs,Angularjs Scope,我已经看到(并阅读)了很多关于嵌套作用域如何工作的信息,我似乎已经很好地理解了它,并且经常使用/滥用它。我的问题不是它如何工作,而是如何最好地利用它。让我举个例子 <body ng-controller="MainCtrl"> <div class="container" ng-view> 视图将加载如下内容: <div ng-controller="CreateEventCtrl"> ... <div class="panel-bod
<body ng-controller="MainCtrl">
<div class="container" ng-view>
视图将加载如下内容:
<div ng-controller="CreateEventCtrl">
...
<div class="panel-body" ng-include src="'partials/eventinfo.html'">
...
该部分还将有一个控制器。这一切对我来说意义重大。我有一个MainCtrl,它知道您的登录信息、您的首选项等。CreateEventCtrl将知道需要什么来处理事件的创建、编辑等,并且手风琴的特定部分(部分)将需要显示一些特定信息
我可能需要从一个父控制器访问内容,这很容易,但我的问题是,可以用很多不同的方法来完成,我似乎不知道最好的方法是什么
到目前为止,我已经尝试了以下实现
$scope.model
,并让所有其他子控制器将其自身属性扩展到该模型上$scope.model
,并让子控制器像这样附加一个额外的模型$scope.model.createEventModel={…}
,或者像这样直接在作用域上添加模型$scope.createEventModel={…}
$scope.shared
模型,并让第一级子控制器创建一个$scope.model
,其下一个子控制器可以扩展、覆盖或在其上添加新的$scope.eventInfoModel
,具体取决于最适合当前视图的内容。所有子控制器都可以选择扩展/覆盖属性也在$scope.shared上
更新:我到处都读到我应该使用服务来共享数据。但我不明白。我想共享的数据可能是通过服务获取的,但它是单向的“获取/获取”操作。还有一些数据是反映/过滤其余数据的用户选择我听了你们的话并尝试了一下。我最终创建了一些服务来保存我的共享数据,然后让所有需要这些信息的控制器都进行了注入
虽然一开始我真的不喜欢这种方法,但我发现它清楚地表明了哪些控制器将使用数据,哪些控制器将不使用数据。这也有助于分离关注点,因为我可以将所有的存储/加载/修改/缓存放进服务中,而不用担心控制器中的数据。我需要在控制器中做的一切要么获取数据,要么将其放回。我不知道“我的”方法是否适合您的需要,但试着看看人力资源管理,我只想共享数据,而不必担心我有什么控制器/嵌套。我认为这对我的情况不太适用,但谢谢。如果您正在寻找最佳实践,请使用此ng controller=“MainCtrl”这是完全错误的,因为全球变暖issue@Whisher你能详细说明一下这一点,或者帮我链接解释一下原因吗?我同意@baba的观点,实现这一点的方法只有两种…使用服务进行模型持久化或使用$rootScope…但是永远不要使用$rootScope,除非绝对没有其他选择,因为这会污染e全局名称空间。