У меня есть небольшой пример ngRoute. Я пытаюсь использовать несколько приложений и контроллеров. Первое приложение/контроллер предназначено для главной страницы, а второй набор приложений/контроллеров - для html, который ngRoute загружает после нажатия кнопки. Однако, похоже, он не работает. Код ниже:Несколько контроллеров, работающих в примере 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}} без данных массива.
Я сейчас изучаю углы, поэтому любая помощь в этом вопросе я буду признателен. Я просто делаю это для удовольствия, чтобы учиться. Поэтому я предполагаю, что проблема не нажимает. :) Благодаря!
проблема здесь заключается в том, что нг маршрута ожидает загрузки * parial * поместить в 'ng- view', но ваш файл customers.html не является частичным, он содержит собственное 'ng-app'. Кроме того, параметр 'controller' в' $ routeProvider' создает объект контроллера из того же модуля, с которым настроен '$ routeProvider', но ваш' CustomerController' находится в совершенно другом модуле. Кроме того, вы никогда не должны использовать 'controller' в JavaScript и' ng-controller' в HTML одновременно, так как они оба загружают уникальный экземпляр контроллера. – Claies
Здесь много ошибок, другими словами. Я могу собрать рабочий образец, но это займет немного времени. – Claies
Большое спасибо за ваше время и ваш комментарий. Я изучаю много своих ошибок только после публикации этого примера. Если вы сможете предоставить рабочий образец, это было бы здорово! Если нет, это тоже нормально, поскольку я понимаю, что это много усилий. Это только для обучения и экспериментов от моего имени. Еще раз спасибо. –