我有一個小的ngRoute示例我試圖使用多個應用程序和控制器。第一個應用程序/控制器用於主頁面,而第二組應用程序/控制器用於按下按鈕後ngRoute加載的html。但是,它似乎並沒有工作。下面的代碼:在ngRoute內工作的多個控制器
主模塊
var app = angular.module("MainModule", ["ngRoute"]);
主控制器
app.controller("MainController", function ($scope) {
});
app.config(function ($routeProvider) {
$routeProvider
.when('/customers', {
templateUrl: "customers.html",
controller: "CustomerController"
})
});
客戶模塊
var CustomerModule = angular.module("CustomerModule", []);
客戶控制器
CustomerModule.controller("CustomerController", function ($scope) {
$scope.Test = "Hey";
$scope.CustomerArray = [
{ "firstName" : "John", "lastName" : "Williams", "Occupation" : "Fireman" },
{ "firstName" : "Louis", "lastName" : "Abrams", "Occupation" : "Policeman" }
]
});
的index.html
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-route.js"></script>
<script src="scripts/MainModule.js"></script>
<script src="scripts/MainController.js"></script>
<link rel="stylesheet" type="text/css" href="MyCSS.css">
</head>
<body>
<div ng-app="MainModule">
<div id="TopDiv">Main Module</div>
<a href="#/customers"><input type="button" value="Load Customers" /> </a>
<div ng-view></div>
</div>
</body>
</html>
customers.html客戶的代碼有
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta charset="utf-8" />
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="scripts/CustomerModule.js"></script>
<script src="scripts/CustomerController.js"></script>
</head>
<body>
<div ng-app="CustomerModule" ng-controller="CustomerController">
{{Test}}
<ul>
<li ng-repeat="x in CustomerArray">{{x.firstName x.lastName x.Occupation}}</li>
</ul>
</div>
</body>
</html>
龍位,但希望簡單的代碼。當我按下「加載客戶」按鈕時的輸出字面上是{{Test}},沒有數組數據可以跟隨。
我只是現在正在學習角度,所以任何幫助這個問題,我將不勝感激。我只是爲了好玩而嘗試學習。所以我想這個問題並不緊迫。 :) 謝謝!
這裏的問題是,NG-路線預計到* parial *加載到NG-' view',但您的customers.html文件不是部分文件,它包含它自己的'ng-app'。同樣,'$ routeProvider'中的'controller'參數實例化了一個與'$ routeProvider'配置的模塊相同的控制器對象,但是你的'CustomerController'是一個完全不同的模塊。最重要的是,你不應該同時在JavaScript和'ng-controller'中使用'controller',因爲它們都加載了控制器的唯一實例。 – Claies
換句話說,這裏有很多錯誤。我可以整理一份工作樣本,但這需要一些時間。 – Claies
非常感謝您的時間和您的評論。我從發佈這個例子中學到了很多我的錯誤。如果你能夠提供一個工作樣本,那就太棒了!如果沒有,那也沒關係,因爲我知道這是很多努力。這只是代表我學習和嘗試。再次感謝你。 –