2014-11-03 52 views
1

我正在學習實現require.js來加載必要的javascript文件。我能夠使用require.js加載java腳本文件來取代<script>標籤。即使我能夠加載js文件,文件內的內容也無法訪問,並且出現錯誤,提示「CarApp模塊未找到」。這會如何改變?使用require.js加載控制器js文件

index.html哪裏加載require.js

<!doctype html> 
<meta charset="utf-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0"> 
<title>My App</title> 
<link rel="stylesheet" href="/vendor/bootstrap-2.3.1/css/bootstrap.css" media="screen"> 
<link rel="stylesheet" href="/css/style.css" media="screen"> 
<script src="/vendor/angularjs-1.0.5/angular.min.js"></script> 
<script src="/vendor/angularjs-1.0.5/angular-resource.min.js"></script> 

<script data-main="/js/main" src="/js/require.js"></script> 

<div ng-app="CarApp" class="containr"> 
    <div ng-view> 
    <!-- partial will go here --> 
    </div> 
</div> 

/js/main.js

requirejs.config({ 
    paths: { 
     controllers: './controllers', 
     app: './app' 
    } 
}); 
requirejs(['controllers', 'app'], 
function (controller, app) { }); 

/js/app.js

var CarApp = angular.module('CarApp', ['ngResource']) 

CarApp.config(function($routeProvider, $locationProvider) { 
    $routeProvider 
    .when('/', {controller: ListCtrl, templateUrl: '/partials/list.html'}) 
    .otherwise({redirectTo: '/'}) 
    $locationProvider.html5Mode(true) 
}) 

加載應用程序之後。使用require.js的js文件,它無法訪問app.js中的'CarApp'模塊。爲什麼發生這種情況?我如何通過main.js訪問'CarApp模塊'

回答

1

裝載有RequireJS的文件不會加載到頁面就緒事件上,這是Angular嘗試引導的時間。這就是沒有找到CarApp模塊的原因。

你應該引導手動角(ref):

  1. 取出ng-app指令,一個ID替換爲:

    <div id="mainContainer" class="containr"> 
    
  2. 引導在main.js手動:

    requirejs(['controllers', 'app'], function(controller, app) { 
        angular.element(document).ready(function() { 
         angular.bootstrap(document.getElementById('mainContainer'), ['myApp']); 
        }); 
    }); 
    

另請參閱angular-require-lazy瞭解一些可能有用的想法。

+0

感謝您的好消息。這些更改不僅像以前一樣加載文件,而且還加入了app.js.有一件事我想知道的是,一旦該進程在行var CarApp = angular.module('CarApp',['ngResource'])之後立即進入app.js,程序不會進入CarApp.config來處理路由。我看不到控制檯中的任何錯誤..如何找到它爲什麼不進入CarApp.config – Deepak 2014-11-04 01:43:13