Я пытаюсь использовать Angular JS с помощью приложения ASP.NET.
Я определил приложение для своей главной страницы (мастер-страницы), и он отлично работает. Теперь я столкнулся с несколькими проблемами с другими страницами.
Пока я определяю дочернюю страницу, которая использует эту главную страницу, она должна использовать свое собственное приложение. Так
Argument 'cityPageCtrl' is not a function, got undefined
На моей главной странице я добавил ссылки ниже:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-cookies.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="<%=ApplicationPath %>lib/js/ui-bootstrap-tpls-0.12.1.min.js"></script>
<script src="<%=ApplicationPath %>cust/js/templateApp.js"></script>
<script src="<%=ApplicationPath %>cust/js/mainPageApp.js"></script>
<script src="<%=ApplicationPath %>lib/js/parallax.min.js"></script>
На моей дочерней странице ниже приведен код, который должен использовать другое приложение ng:
<asp:Content ID="Content1" ContentPlaceHolderID="headContent" runat="server">
<script src="../cust/js/cityPageApp.js"></script>
<title ng-bind="'Restaurants in '+cityName+' | Restaurants'">Restaurants in your city serving online | Online Restaurnats</title>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="bodyContent" runat="server">
<div ng-app="cityPage" ng-controller="cityPageCtrl">
</div>
</asp:Content>
Ниже приведено то, что у меня есть в файле citypage js для определения приложения для углового.
var app = angular.module('cityPage', ['ui.bootstrap', 'templateModule', 'ngCookies']);
app.controller("cityPageCtrl", function($scope, $http, $modal, $cookies, $interval)
В идеале вы должны создать для этого несколько модулей. Ваша дочерняя страница должна создать собственный модуль, который затем должен быть добавлен в качестве ссылки на ваш основной модуль.
var mainApp= angular.module('main', ['childApp']); //child 1
Вы также можете попробовать выполнить ручную загрузку с помощью angular.bootstrap
angular.bootstrap(document.getElementById("divId"), ['myChildModule']);
Вы можете использовать именованные разделы для добавления каждого файла сценария дочерней страницы.
На главной странице:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular-cookies.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js"></script>
<script src="<%=ApplicationPath %>lib/js/ui-bootstrap-tpls-0.12.1.min.js"></script>
<script src="<%=ApplicationPath %>cust/js/templateApp.js"></script>
<script src="<%=ApplicationPath %>cust/js/mainPageApp.js"></script>
<script src="<%=ApplicationPath %>lib/js/parallax.min.js"></script>
@RenderSection("AngularScripts", required: false)
И на странице вашего ребенка:
@section AngularScripts
{
<script src="../cust/js/cityPageApp.js"></script>
}
Вы должны ссылаться только на общие файлы сценариев на главной странице и перемещать другие файлы на соответствующие дочерние страницы. например, если "mainPageApp.js" предназначен только для одной страницы, удалите его с главной страницы и поместите на дочернюю страницу.