【问题标题】:How to prevent reloading of whole ng-admin after refresh page刷新页面后如何防止重新加载整个ng-admin
【发布时间】:2017-10-25 08:24:29
【问题描述】:

我遇到了刷新页面的问题。示例:基本应用程序打开并且 url 是 localhost:8000/dashboard,然后我从菜单或其他任何地方转到用户选项卡,并且 url 是 localhost:8000/users/list。如果我在用户上刷新页面,那么它将再次进入仪表板重新加载整个页面。
后端正在正确处理它,当我创建自定义状态并且没有将“ng-admin”指定为父级时,它会停留在刚刚刷新的位置,但是当我将父级添加到状态时,它会再次重新加载整个应用程序。 还启用了 html5mode

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

实体被添加为 ng-admin 文档指定:

app.config(['NgAdminConfigurationProvider', 'RestangularProvider', function(nga, RestangularProvider) {
     var admin = nga.application('Admin') // application main title
        .debug(false) // debug disabled
        .baseApiUrl('/api/'); // main API endpoint

     var users = nga.entity('users');

     admin
         .addEntity(users);
     users.listView()
          .title('Admin users')
             .fields([
                nga.field('name')
                   .label('Name')
                   .isDetailLink(true),
                nga.field('email')
                   .label('E-mail Address'),
                nga.field('created', 'date')
                   .label('Created')
                   .map(fromNow),
                nga.field('modified', 'date')
                   .label('Modified')
                   .map(transformDate),
                nga.field('active', 'boolean')
                   .label('Status'),
                nga.field('createdBy')
                   .label('Created by'),
                ]);

下一段代码

$rootScope.$on('$stateChangeSuccess', function (event, newUrl, oldUrl, newState, oldState) {
    console.log('event:' , event);
    console.log('newUrl:' , newUrl);
    console.log('oldUrl:' , oldUrl);
    console.log('newState:' , newState);
    console.log('oldState:' , oldState);
})

它在从仪表板访问用户时提供输出:

event: {name: "$stateChangeSuccess", targetScope: p, defaultPrevented: false, currentScope: p, preventDefault: ƒ}   
newUrl: {url: "?{search:json}&{page:int}&sortField&sortDir", params: {…}, parent: "listLayout", views: {…}, name: "list"}
oldUrl: {entity: "users", search: {…}, page: 1, sortField: null, sortDir: null}   
newState: {parent: "ng-admin", url: "/dashboard?sortField&sortDir", params: {…}, controller: "DashboardController", controllerAs: "dashboardController", …}   
oldState: {sortField: null, sortDir: null}

然后刷新

event: {name: "$stateChangeSuccess", targetScope: p, defaultPrevented: false, currentScope: p, preventDefault: ƒ}  
newUrl: {parent: "ng-admin", url: "/dashboard?sortField&sortDir", params: {…}, controller: "DashboardController", controllerAs: "dashboardController", …}  
oldUrl: {sortField: null, sortDir: null}  
newState: {url: "?{search:json}&{page:int}&sortField&sortDir", params: {…}, parent: "listLayout", views: {…}, name: "list"}  
oldState: {entity: "users", search: {…}, page: 1, sortField: null, sortDir: null}

任何想法表示赞赏。

【问题讨论】:

    标签: javascript angularjs angular-ui-router ng-admin html5mode


    【解决方案1】:

    问题是我在标头控制器功能中有一个错误,该功能添加了进入仪表板的方法,并且每次标头重新初始化时都会调用它。也许这会对某人有所帮助。

    【讨论】:

    • 您能否详细说明您是如何解决这个问题的?
    • function HeaderController(Auth, $location, $sessionStorage,$localStorage){ var vm = this; vm.action = { logout: logout, goTo: goTo }; function logout() { Auth.Logout(); } function goTo(state) { $location.path(state); } }
    • 我是这样使用的 vm.action = { logout: logout, goTo: goTo() };
    猜你喜欢
    • 1970-01-01
    • 2019-04-03
    • 2011-12-14
    • 2018-07-04
    • 2021-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多