2017-04-05 64 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