У меня проблема с моим угловым приложением, когда я обновляю страницу, он не показывает мне правильную страницу. Это похоже на то, как я передаю параметр на страницу неправильно.
Итак, у меня есть мое состояние в ui-router:
.state('stateDashboard', {
url: '/dashboard',
templateUrl: '/templates/dashboard.html',
controller: 'dashboardController'
})
На странице, где у меня есть список панелей инструментов:
<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) устанавливает идентификатор в $ rootScope.dashId
и в моем контроллере для отображения панели мониторинга у меня есть:
Dashboards.getDashboard({ id: $rootScope.dashId }).$promise.then(function (result) {
$rootScope.model = result;
}
Итак, теперь, когда я обновляю страницу, $ rootScope.dashId не определен, поэтому не отображается страница правильно. Как я могу это исправить?
Добавьте свой 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;
}