AngularJS非常新,我猜測我所要做的是延遲加載。我查看了幾個不同的博客,我還沒有找到完全使用AngularJS的完整工作解決方案。Angular JS:如何加載部分中的js文件
據我所知,如果我把<script src="js/process1.js"></script>
放在index.html中,一切正常,我試圖減少在初始加載時拉下的js的數量。
隨着腳本標籤坐在部分,它永遠不會被加載,所以P1Ctrl永遠不會被創建。因此,目前,如果用戶進入應用程序並且永遠不會進入process55,那麼即使該用戶從未使用過,該用戶仍然擁有用於process55的代碼。
有沒有一種方法來加載文件,並將process1.js中創建的對象插入到main中定義的應用程序中,在執行process1時執行?
的index.html:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Large Angular App</title>
<link rel="stylesheet" href="lib/foundation/css/foundation.min.css" />
</head>
<body ng-app="largeApp" ng-controller="LargeAppController">
<div>
<a href="#/home">Home</a> | <a href="#/process1">Process1</a>
</div>
<br/>
<br/>
<br/>
<ng-view>Test</ng-view>
<script type="text/javascript" src="lib/jquery/jquery.min.js"></script>
<script type="text/javascript" src="lib/angular/angular.js"></script>
<script type="text/javascript" src="lib/angular/angular-route.js"></script>
<script type="text/javascript" src="js/main.js"></script>
</body>
</html>
JS/main.js:
var app = angular.module("largeApp", ['ngRoute']);
var appCtrl = app.controller("LargeAppController", function(){});
app.config(function ($routeProvider, $controllerProvider) {
// save references to the providers
app.registerCtrl = $controllerProvider.register,
$routeProvider.when('/', {templateUrl: 'partials/home.html'});
//Thinking I need to set up a resolve to fire off a script loader to load js.
$routeProvider.when('/process1', {templateUrl: 'partials/process1/process1.html'});
$routeProvider.otherwise({redirectTo: '/'});
});
泛音/ home.html做爲:
<div>
Home Page
</div>
泛音/ process1.html:
<script type="text/javascript" src="js/process1/Process1Controller.js"></script>
Process 1 {{process1data}}
JS/process1.js:
console.log("I made it here");
app.registerCtrl('Process1Controller',function($scope){
$scope.process1data = "Hello!";
}
]);
把所有這一切放在一起,它不會中斷,但它也不起作用。試過有沒有jQuery的參考。該頁面顯示沒有錯誤,但js從未被調用,並且數據被控制器放入視圖中。看看你提到的這個IFY網站似乎表明我需要一個腳本加載器並使用promise。我知道我很接近......但還不夠完美。 – John
我剛剛意識到使用jQuery的這個技巧不適用於Angular 1.2。 – lort
這個技巧切換到了1.1.5。 – John