带有ASP.NET母版页的Angular JS

时间:2015-08-16 05:04:24

标签: javascript jquery asp.net angularjs

我正在尝试使用ASP.NET应用程序来使用Angular JS。

我为我的主页(母版页)定义了应用程序,它运行正常。现在我遇到了其他页面的多个问题。

虽然我定义了一个使用此母版页的子页面,但它必须使用自己的应用程序。所以

  1. 我们在哪里可以在子页面上定义app和controller属性。
  2. 如果我在DIV容器上定义它们,它就不喜欢它了。它说 - Argument 'cityPageCtrl' is not a function, got undefined
  3. 在我的母版页中,我添加了以下参考资料:

    <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>
    

    在我的子页面中,下面是我必须使用另一个应用程序的代码:

    <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文件中定义App for Angular的内容。

    var app = angular.module('cityPage', ['ui.bootstrap', 'templateModule', 'ngCookies']);
    app.controller("cityPageCtrl", function($scope, $http, $modal, $cookies, $interval)
    

2 个答案:

答案 0 :(得分:2)

理想情况下,您应该为此创建多个模块。您的子页面应该创建自己的模块,然后将其添加为主模块的引用。

    var mainApp= angular.module('main', ['childApp']);  //child 1

您也可以尝试使用angular.bootstrap

手动启动
    angular.bootstrap(document.getElementById("divId"), ['myChildModule']);

答案 1 :(得分:0)

您可以使用named sections添加每个子页面的脚本文件。

在您的母版页中:

    <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”仅适用于一个页面,请将其从母版页中删除并将其放在子页面中。