2017-03-02 55 views
3

这是我第一次使用ui-router,在处理路由和重新加载某些状态时遇到困难。我希望任何人都可以帮助我。当访问页面时,ui-router在我的ui-views中显示原始代码

概述我的index.html

<html ng-app="resApp"> 
    <head></head> 
    <body ng-controller="mainCtrl" ng-cloak> 
    <div ng-show="showCustomerContent"> 
     <div id="page-wrapper"> 
       <div ui-view="header"></div> 
       <div ui-view="slider" ng-show="displaySlider"></div> 
       <div ui-view="content"></div> 
       <div ui-view="footer"></div> 
     </div> 
    </div> 

    <div ng-show="showAdminContent"> 
      <div id="page-wrapper"> 
       <div ui-view="aheader"></div> 
       <div ui-view="asidebar"></div> 
       <div id="page-content-wrapper"> 
       <div id="page-content"> 
        <div class="container-fluid"> 
         <div ui-view="acontent"></div> 
        </div> 
       </div> 
    </div> 
    <div ui-view="jsincludes"></div> 

    </body> 
</html> 

routing.js

'use strict' 
     resApp.config(['$stateProvider', '$urlRouterProvider','$httpProvider','$locationProvider',function ($stateProvider, $urlRouterProvider, $httpProvider,$locationProvider) { 
       $urlRouterProvider 
       .when('/','/Home') 
       .when('/login','/Home') 
       .otherwise('/Home'); 

       $stateProvider 
       .state("home",{ 
       url:'/Home', 
       views:{ 
        'jsincludes':{ 
         templateUrl:'views/includes/jsincludes.html' 
        }, 
        'header':{ 
         templateUrl:'views/customer_part/header.html', 
        controller:'headerCtrl' 
        }, 
        'slider':{ 
         templateUrl:'views/customer_part/slider.html' 
        }, 
        'footer':{ 
         templateUrl:'views/customer_part/footer.html' 
        } 
       } 

       }) 
       .state("home.aboutus",{ 
       url:"/AboutUs", 
       views:{ 
        '[email protected]':{ 
        templateUrl:'views/customer_views/aboutus.html', 
        controller:'aboutusCtrl' 
          } 
         } 
       }) 
       $httpProvider.useApplyAsync(true); 
     }]); 

controller.js

'use strict' 
resApp.controller('mainCtrl',['$scope','$location','UserData','$rootScope',function($scope,$location,UserData,$rootScope){ 
    $rootScope.displaySlider = true; 
    $scope.$on('$stateChangeSuccess',function(event, toState){ 
     var url = $location.absUrl().split('/'); 
     //console.log(url); 
     if(url.length > 6){ 
      $rootScope.displaySlider = false; 
     }else{ 
      $rootScope.displaySlider = true; 
     } 

    }); 

    UserData.getSessVar().then(function(msg){ 
     if(msg.data!="none"){ 
      $rootScope.uid = msg.data["uid"]; 
      $rootScope.fullname = msg.data["fullname"]; 
      $rootScope.role = msg.data["role"]; 
      $rootScope.Id = msg.data["Id"]; 
      if($rootScope.role == "customer"){ 
       $scope.showCustomerContent = true; 
      }else{ 
       $scope.showAdminContent = true; 
      } 
     }else{ 
      $rootScope.role = "none"; 
      $scope.showCustomerContent = true; 
     } 

    }); 


}]); 
resApp.controller('headerCtrl',['$scope','$rootScope','UserData','$location','$state','$stateParams',function($scope,$rootScope,UserData,$location,$state,$stateParams){ 
    $scope.hideLoginBtn = false; 
    if($rootScope.uid!=undefined){ 
     $scope.hideLoginBtn = true; 
    } 

    $scope.logout = function(){ 
     UserData.logoutUser($rootScope.Id).then(function(msg){ 
      if(msg.data=="success"){ 
       window.location.reload(); 
       //$location.path('/Home'); 
      } 
     }); 
    } 

    $scope.home = function(){ 
     $state.go('home', {}, { reload: true }); 
    } 

    $scope.aboutus = function(){ 
     $state.go('home.aboutus',{},{reload:true}); 
    } 
}]); 

resApp.controller('aheaderCtrl',['$scope','$rootScope','UserData','$location',function($scope,$rootScope,UserData,$location){ 
    $scope.logout = function(){ 
     UserData.logoutUser($rootScope.Id).then(function(msg){ 
      if(msg.data=="success"){ 
       window.location.reload(); 
       //$location.path('/Home'); 
      } 

     }); 
    } 
}]); 

在我header.html中我有这样的代码

<li> 
    <a href="" title="Home" ng-click="home()"> 
     Home 
    </a> 
</li> 

Image when I click Home

每当我点击Homeindex.html显示的是我头和滑块的另一个副本。正如您在图像中看到的那样,{{fullname}}示波器已显示,另一个ui-views。我试着做ui-sref="home" ui-sref-opts="{reload: true, notify: true}"并把它放在我的锚标记中,但结果是一样的。我需要重新加载页面,因为我的滑块不显示,如果我只是做ui-sref="home"。我也尝试使用ng-cloak,但每当我点击锚标记时,它也会以angularjs显示我的原始代码。显示的原始代码在整个页面呈现时消失。谁能帮我这个?

更新 这个错误只出现在Mozilla Firefox中。我的路由在Chrome中是非常好的

+0

哪个角度和UI路由器的版本,您使用的是做plunker?我想在一些在线代码编辑器中重新创建这个问题。 –

+0

我使用了它的最新版本sir – pryxen

+0

你可以做一个你的代码的Plunker? – Mistalis

回答

1

有div标签上下面的代码关闭问题

<div ng-show="showAdminContent"> 
      <div id="page-wrapper"> 
       <div ui-view="aheader"></div> 
       <div ui-view="asidebar"></div> 
       <div id="page-content-wrapper"> 
       <div id="page-content"> 
        <div class="container-fluid"> 
         <div ui-view="acontent"></div> 
        </div> 
       </div> 
    </div> 

其更改如下

<div ng-show="showAdminContent"> 
      <div id="page-wrapper"> 
       <div ui-view="aheader"></div> 
       <div ui-view="asidebar"></div> 
       <div id="page-content-wrapper"> 
       <div id="page-content"> 
        <div class="container-fluid"> 
         <div ui-view="acontent"></div> 
        </div> 
       </div> 
     </div> 
</div> 

另外,我不知道为什么你是否将页眉,页脚和滑块保持为命名的ui-view,而使用简单的ng-include可以实现相同的效果。仅使用路由进行重定向和超链接。

请参阅我的如何

https://plnkr.co/edit/ZatFwz83ODsPjy55eRc5?p=preview

+0

哦,我从来没有检查过它。先生,谢谢你。 – pryxen

+0

欢迎您:) – Kalyan

1

理想情况下,您应该有另一个html文件,例如: - main.html,并在main.html中指定ui-view。为前: -

<div id="wrapper"> 
<div ui-view="header"></div> 
<div ui-view></div> 
<div ui-view="footer"></div> 

+0

我会试试这个先生 – pryxen

+0

你能告诉我该怎么做先生吗? – pryxen

相关问题