【发布时间】:2014-09-22 19:37:31
【问题描述】:
我正在创建一个 AngularJS 应用程序,它是一个由 6 个步骤组成的网络规划器。每个步骤都有自己的视图和自己的控制器。有一些数据应该可以从所有州访问(计划者的标题/标题中使用了订单级别信息)。我已将此信息放入服务中,但问题出在此根控制器中,它无法访问 $stateParams,这是我知道是否需要获取 API 数据的方式。
当 ui.router 运行并在 URL 中找到 ID 时,我可以使用 $scope.$emit() 或 $scope.$broadcast 告诉我的根控制器,但这似乎是糟糕的设计。使$stateParams 可用于全局控制器的最佳方法是什么?
这是 HTML 的样子。
<div ng-app="MyApp.SubModule.Module" ng-controller="RootController">
<sk-overlay ng-show="overlayVisible"></sk-overlay>
<h2 class="dashTitle"> {{ (Order.CustomerInfo.CompanyName ? '- ' + Order.CustomerInfo.CompanyName : '') }}</h2>
<div id="wpMenuContainer" class="wpMenuContainer">
<ul class="wpMenu clearfix">
<li ng-repeat="chevron in Chevrons" ng-class="{ active : chevron.active, navable : $index < Index }" ng-click="!($index < Index)||navigate(chevron, $index)">
<span>{{ chevron.name }}</span>
</li>
</ul>
</div>
<div ui-view class="do"></div>
</div>
我希望 RootController 用于控制整个应用程序的全局数据,但 $stateProvider 中不存在该状态,因此它无法访问 $stateParams 变量。
【问题讨论】:
标签: angularjs angular-ui-router