我的角度应用程序出现问题,当我刷新页面时,它没有显示正确的页面。看起来我将参数传递给页面的方式不对。
所以我在ui-router中有我的状态:
.state('stateDashboard', {
url: '/dashboard',
templateUrl: '/templates/dashboard.html',
controller: 'dashboardController'
})
在我有Dashboards列表的页面中:
<div class="tile" ng-repeat="d in dashList" ng-class="[d.tileColour, d.tileSize]" ui-sref="stateDashboard" ng-click="setDashboard(d.id)">
<div class="tile-body">
<i class="fa fa-dashboard"></i>
</div>
<div class="tile-object">
<div class="name">
{{d.name}}
</div>
</div>
</div>
其中setDashboard(id)将id设置为$ rootScope.dashId
并在我的控制器中显示我有的仪表板:
Dashboards.getDashboard({ id: $rootScope.dashId }).$promise.then(function (result) {
$rootScope.model = result;
}
所以现在当我刷新页面时,$ rootScope.dashId未定义,因此无法正确显示页面。我该如何解决?
答案 0 :(得分:1)
将dashId添加到URL,以便在更改仪表板和/或刷新页面时传递它。因此,请避免调用setDashboard,因为它只会在您重新加载页面之前生效。
.state('stateDashboard', {
url: '/dashboard/:dashId',
templateUrl: '/templates/dashboard.html',
controller: 'dashboardController'
})
现在在你的控制器内,你可以像这样得到它。无需使用$ rootScope。
Dashboards.getDashboard({ id: $stateParams.dashId }).$promise.then(function (result) {
$rootScope.model = result;
}