【问题标题】:AngularJS page blank after refresh刷新后AngularJS页面空白
【发布时间】:2017-02-21 11:36:35
【问题描述】:

我正在使用 AngularJS 构建一个 Web 应用程序。我正在使用 ui-router,我已经定义了这样的状态:

//appContacts.js
(function () {
    "use strict";
    var app = angular
        .module('appContacts', ['ui.router', 'angularUtils.directives.dirPagination'])
        .config(['$stateProvider', '$locationProvider', '$urlRouterProvider',
                        function ($stateProvider, $locationProvider, $urlRouterProvider) {
                            $urlRouterProvider.otherwise("/");
                            $stateProvider
                                 .state("home", {
                                     url: "/",
                                     templateUrl: "views/contactsView.html",
                                     controller: "contactsController",
                                     controllerAs: "vm"
                                 })
                                 .state("organization", {
                                     url: "/organizations/:Id",
                                     templateUrl: "views/organizationDetail.html",
                                     params: { Id: null },
                                     controller: "organizationsController",
                                     controllerAs: "vm"
                                 })
                                .state("contact", {
                                    url: "/contact/:Id",
                                    templateUrl: "views/contactDetails.html",
                                    params: { Id: null },
                                    controller: "contactsDetailController",
                                    controllerAs: "vm"
                                })

                            $locationProvider.html5Mode({
                                enabled: true,
                                requireBase: false,
                                rewriteLinks: true
                            });

                            $locationProvider.html5Mode(true);
                        }
        ]);
})();

我使用 HTTP 方法从数据库中获取请求的信息。我有两个问题:

  1. 当我刷新页面时,页面变为空白。知道我做错了什么吗?
  2. 主页控制器自动调用使用 ng-repeat 填充表的 HTTP 方法。这意味着不可能像http://localhost:50895/contact/the-id 这样直接访问另一个页面,因为没有存储数据。我总是必须访问主页来加载数据。如何保存这些数据并将其提供给所有页面/状态/控制器?

编辑:

我在控制台中显示了 4 个错误。

【问题讨论】:

标签: angularjs state


【解决方案1】:
  1. 能否调试一下并检查浏览器控制台是否有任何错误或异常?

  2. 您可以通过三种方式传递数据:

a) 使用 $rootScope ,但这不被视为正确的编码标准

b) 利用 AngularJs 提供的内置 .service(),这是一个单例对象,意味着在第一个控制器中设置的值可以在任何地方使用。但是如果刷新页面,该值将被删除。这被认为是比使用 $rootScope

更好的编码标准

c) 您可以使用localStoragesessionStorage,即使在页面刷新后也可以检索数据。数据会存储为字符串,所以需要解析。

还有另一种存储数据的方法,Cookie。但这是用来存储小字符串值的。

【讨论】:

  • 感谢您的回答。我已根据您的要求编辑了帖子,添加了我在控制台中遇到的错误。 2.- 目前我正在使用一项服务将数据从一个控制器传递到另一个控制器,但正如您所说,刷新页面时它没有帮助。我会试试localStorage。
  • 您确实提到刷新页面时页面会变为空白,请问您刷新页面时所处的路线。
  • 发生在每个页面/路由中,我总是要到主页重新启动进程
  • 看起来你是版本问题,尝试将 Angular 降级到 1.5.3
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-15
  • 2021-04-15
  • 1970-01-01
  • 2023-03-26
  • 2016-12-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多