2017-04-05 65 views
0

我正在處理我的第一個應用程序。當我在網頁瀏覽器中打開它,我得到這個錯誤:未捕獲的ReferenceError:控制器未在app.js定義 :3 在app.js:15routeProvider不工作,控制器未定義使用angularjs 1.5

我創建app.js文件後,我得到了這個錯誤,試圖將我的controller.js鏈接到它。此外,routeProvider似乎還沒有工作。而我的佔位符停止工作,這在以前工作。

我簡化了我的代碼以保持其可讀性。我有更多的html文件,並結合使用引導與JQuery和CSS。有人知道這裏出了什麼問題嗎?

app.js

(function(){ 

    var myApp = angular.module('myApp',  ['ngRoute']).controller('controller', controller) 

    .config(function($routeProvider, $locationProvider){ 
    $locationProvider.html5Mode(true); 
    $routeProvider 
     .when('/main', { 
      templateUrl: '../main.html', 
       controller: 'controller' 
     }) 
     .otherwise({redirectTo: '../main'}); 

}); 
})(); 

controller.js

 (function() { 
     angular.module('controller', ['ngRoute']) 
      .controller('controller', ['$scope', function ($scope) { 
     }]); 
    })(); 

的index.html

<!DOCTYPE html> 
<html data-ng-app = "myApp"> 

<head> 
<meta charset="utf-8"/> 
<title> Who Brings What </title> 
</head> 

<body> 
<div class="container"> 
    <nav class="navbar navbar-default"> 
/*more code here */ 
    </nav> 
</div> 

<div data-ng-view></div> 

<script  src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular.min.js"> </script> 
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular- route.js"></script> 
<!--<script  src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.6/angular- route.js"> </script>--> 
<script src = "../controller.js"></script> 
<script src = "../app.js"></script> 

</body> 

</html> 

main.html中

<div> 
    Main Body 
</div> 
+0

失誤過多在此代碼 –

回答

0

有幾個問題與您的代碼,

(i)由於你在一個文件中單獨定義的控制器,可以安全地從最初的模塊中卸下。

function(){ 
var myApp = angular.module('myApp',['ngRoute']) 
myApp.config(function($routeProvider, $locationProvider){ 
    $locationProvider.html5Mode(true); 
    $routeProvider 
     .when('/main', { 
      templateUrl: './main.html', 
       controller: 'controller' 
     }) 
     .otherwise({redirectTo: '/main'}); 
}); 
})(); 

(ii)您不需要有ngRoute注射兩次,你可以只使用全局聲明模塊

(function() { 
      app.controller('controller', ['$scope', function ($scope) { 
     }]); 
})(); 

DEMO