2015-11-05 50 views
0

我在尝试使用ui-view时遇到AngularJS中的问题。 如果我在完整页面中声明脚本,控制器将保持可见状态。 如果我需要使用我创建的每个控制器执行此操作,我将在索引页面内部有很多控制器,而不是页面内的单个控制器。 在Asp.net MVC中,我可以使用RenderSection函数。 有我的代码:在Asp.Net MVC中,AngularJS中有类似RenderSection的“方法”吗?

的Index.html

<html lang="en"> 
<head> 
    <script src="Scripts/angular.min.js"></script> 
    <script src="Scripts/angular-ui-router.min.js"></script> 
    <script src="Scripts/venus.js"></script> 
    <script src="Scripts/controllers/conteudoController.js"></script> 
</head> 
<body ng-app="VenusApp"> 
    <div class="container"> 
     <div class="row"> 
      <div class="col-md-3"> 
       <p class="lead">Shop Name</p> 
       <div class="list-group"> 
        <a href="#" class="list-group-item">Category 1</a> 
        <a href="#" class="list-group-item">Category 2</a> 
        <a href="#" class="list-group-item">Category 3</a> 
       </div> 
      </div> 
      <div class="col-md-9" ui-view=""> 
      </div> 
     </div> 
    </div> 
</body> 
</html> 

和我的第二页仅仅是一个HTML表格。

对不起,任何问题,但这是我的第一篇文章在stackoverflow。

+0

是的,有。它被称为指令性转换。 – pixelbits

回答

0

它看起来像你的问题是,即使你不需要其他控制器,你仍然需要注入主index.html之前,该控制器甚至使用正确?

在Angularjs中,您可以使用$ocLazyLoad模块,该模块仅允许您在需要时加载控制器。

当您在angularjs config中定义路由配置时,您将配置哪个控制器是需要的。

这是如何做到的。

$stateProvider 
      .state('login', { 
       url: '/login', 
       controller: 'LoginCtrl', 
       templateUrl: 'views/login.html', 
       resolve: { 
        loadMyFiles: function ($ocLazyLoad) { 
         return $ocLazyLoad.load({ 
          name: 'Myapp', 
          files: [ 
          'scripts/controller/login.js' 
          ] 
         }) 
        } 
       } 
      }).state('reset', { 
       url: '/reset/token/:token', 
       controller: 'ResetCtrl', 
       templateUrl: 'views/reset.html', 
       resolve: { 
        loadMyFiles: function ($ocLazyLoad) { 
         return $ocLazyLoad.load({ 
          name: 'Myapp', 
          files: [ 
          'scripts/controller/reset.js' 
          ] 
         }) 
        } 
       } 
      }).state('verify', { 
       url: '/verify', 
       controller: 'VerifyCtrl', 
       templateUrl: 'views/verify.html', 
       resolve: { 
        loadMyFiles: function ($ocLazyLoad) { 
         return $ocLazyLoad.load({ 
          name: 'Myapp', 
          files: [ 
          'scripts/controller/verify.js' 
          ] 
         }) 
        } 
       } 
      }) 

不仅控制器JS,你甚至可以延迟加载css.This将帮助您减少所有index.html中加载JS吨的和CSS。

注:我没有使用NG-路线,而不是我使用的UI-router.Above代码UI路由器+ $ ocLazyLoad