2017-05-15 16 views
0

ngRouteを初めて自分自身で動作させようとしています。コントローラが登録されていないようです

コントローラを登録しようとすると、私はError: [$controller:ctrlreg]を打っています。

私のindex.html:

<!DOCTYPE html> 
<html> 
<head> 
    <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 
    <link rel="stylesheet" href="resources/css/bootstrap.min.css" /> 
    <link rel="stylesheet" href="resources/css/font-awesome.min.css" /> 
    <link href="resources/css/header.css" rel="stylesheet" /> 
    <link href="resources/css/index.css" rel="stylesheet" /> 
</head> 
<body> 
    <div id="main-div" class="flex"> 
     <div class="flex header"> 
      <img id="header-img-left" src="resources/img/WSC.png" /> 
      <img id="header-img-right" src="resources/img/StobartRail.png" /> 
     </div> 
     <!-- body --> 
     <div ng-app="kioskApp" id="questions-div"> 
      <div ng-view></div ng-view> 
     </div> 
    </div> 
    <script src="resources/js/angular.min.js"></script> 
    <script src="resources/js/angular-route.min.js"></script> 
    <script src="resources/js/jquery-3.2.1.min.js"></script> 
    <script src="resources/js/bootstrap.min.js"></script> 
    <script src="app/app.module.js"></script> 
    <script src="app/components/homeController.js"></script> 
</body> 
</html> 

あなたはそれが2つの.jsファイル、モジュールおよびhomeControllerである第2のもの1を参照する見ることができるように。

モジュールは、単純にルートを設定します:私は私のng-viewに、そのファイル上のさまざまな要素を見ることができるように

(function() { 
    angular.module('kioskApp', ['ngRoute']) 
     .config(function ($routeProvider) { 

      $routeProvider.when("/", { 
       controller: "../../app/components/homeController", 
       controllerAs: "vm", 
       templateUrl: "../../app/home/home.html" 
      }); 

      $routeProvider.when("/login", { 
       controller: "../../app/components/loginController", 
       controllerAs: "vm", 
       templateUrl: "../../app/home/login.html" 
      }); 

      $routeProvider.otherwise({ redirectTo: "/" }); 
     }); 

})(); 

私の.htmlを微拾います。の代わりに、

(function() { 

    "use strict"; 

    angular.module('kioskApp') 
     .controller('homeController', homeController); 

    function homeController() { 
     let vm = this; 

     vm.placeholder = [{ id: 10 }, { id: 11 }]; 

    }; 
})(); 

答えて

2

、ファイル・パスは必要ありません。コントローラではなく、パス名に

+0

F ** k私の人生...私はあまりにも長くこの画面を見てきました...乾杯< – geostocker

+0

@geostocker angularjsはあなたがその名前で登録したコントローラを検索します。 :) – Pengyy

0

あなたは、コントローラを指定エラーがあります。しかし、いくつかの理由で私のコントローラは

私はhomeControllerに問題を見つけることができません...登録されていないようですファイルへのパスを指定する必要があります。あなたのルートの設定で

これは正しい構文でなければなりません

$routeProvider 
    .when('/', { 
    templateUrl: '../../app/home/login.html', 
    controllerAs: "vm", 
    controller: 'LoginCtrl' 
    }) 
0

だけコントローラパスではなく、コントローラ名を使用します。 ように:routesにコントローラをバインドするとき

$routeProvider.when("/", { 
     controller: "homeController", 
     controllerAs: "vm", 
     templateUrl: "../../app/home/home.html" 
    }); 
0
 $routeProvider.when("/", { 
      controller: "homeController", 
      controllerAs: "vm", 
      templateUrl: "../../app/home/home.html" 
     }); 

     $routeProvider.when("/login", { 
      controller: "loginController", 
      controllerAs: "vm", 
      templateUrl: "../../app/home/login.html" 
     }); 

変更制御フィールド: 以下の例を参照してください。

https://docs.angularjs.org/api/ngRoute/provider/ $ routeProvider

コントローラ - {(文字列|機能)=} - 文字列として渡された場合、新しく作成されたスコープまたは登録 コントローラの名前と に関連付けられるべきコントローラFN。

関連する問題