簡體   English   中英

在Angular中使用沒有路徑的控制器

[英]Using a controller without a route in Angular

我的導航欄有一個控制器,因為它會在某些頁面而不是其他頁面上。 這是導航欄的標記:

<html ng-app="myApp">
 <head>
   <title> My layout.html </title>
 </head>
 <body>
   <nav ng-controller="NavCtrl">
    I have this NAVBAR
   </nav>
  <div ui-view></div> 
 </body>
</html>

通常,我會在我的路線中指定控制器的名稱,如下所示:

$stateProvider.state('/', {
 controller: 'NavbarCtrl'
});

但在這種情況下,我沒有與導航欄對應的路徑,我只有自己的導航欄控制器文件。 我的問題是:如何在沒有templateUrl通過ui-router注冊控制器?

無需在ui-router中注冊控制器; 只需在應用程序模塊上定義控制器即可。

angular.module('myApp').controller('NavbarCtrl', function($scope) {
    $scope.testVar = "some value";
});

現在,您可以在控制器管理的模板的一部分中訪問testVar變量。

我認為另一種提供可維護代碼的方法是在$stateProvider為導航欄使用基本狀態。

    $stateProvider
      .state('base', {
        templateUrl: 'base.html',
        controller: 'NavbarCtrl'
      })
      .state('base.child', {
        url: 'url-of-child-state',
        views: {
          'view-for-navbar': {
            templateUrl: 'child-template',
            controller: ChildCtrl
          }
        }
      })

現在,您可以在各種子頁面上使用導航欄,如主頁面。 只需在base.html及其下方包含導航欄的代碼即可添加此行<div ui-view="main-view"></div>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM