刷新页面问题

时间:2015-12-02 11:27:06

标签: angularjs angular-ui-router

我的角度应用程序出现问题,当我刷新页面时,它没有显示正确的页面。看起来我将参数传递给页面的方式不对。

所以我在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未定义,因此无法正确显示页面。我该如何解决?

1 个答案:

答案 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;
     }