Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在视图渲染之前调用angularjs get方法调用_C#_Angularjs_Asp.net Mvc - Fatal编程技术网

C# 如何在视图渲染之前调用angularjs get方法调用

C# 如何在视图渲染之前调用angularjs get方法调用,c#,angularjs,asp.net-mvc,C#,Angularjs,Asp.net Mvc,我正在尝试使用angular js动态绑定菜单,使用局部视图。。这是正常工作,但我想在视图渲染前绑定菜单 目前,它渲染局部视图和主视图,之后它会使用angular get方法 AngularJs控制器: 局部视图(_Layout.cshtml): @ViewBag.Title-我的ASP.NET应用程序 @RenderBody() @RenderSection(“脚本”,false) 我在我的另一个视图页面中包含了这个部分视图,在视图渲染之后进行angular js调用。

我正在尝试使用angular js动态绑定菜单,使用局部视图。。这是正常工作,但我想在视图渲染前绑定菜单

目前,它渲染局部视图和主视图,之后它会使用angular get方法

AngularJs控制器: 局部视图(_Layout.cshtml):

@ViewBag.Title-我的ASP.NET应用程序
    @RenderBody() @RenderSection(“脚本”,false)


    我在我的另一个视图页面中包含了这个部分视图,在视图渲染之后进行angular js调用。我想调用AngularJS控制器get方法
    $http.get('http://localhost:9585/admin/menulist)
    在查看渲染之前。

    在加载时调用$scope.init函数,如下所示

        app.controller('menuController', ['$scope', '$http', function ($scope, $http) {
            $scope.init = function () {
                angular.element(document).ready(function () {
                    $scope.SiteMenu = [];
                       $http.get('http://localhost:9585/admin/menulist').then(function (data) {
                           debugger;
                           if (data.data != "" && data.data != "1") {
                               $scope.SiteMenu = data.data;
                           }
                           else
                               window.location="/UserLogins/SignIn"
                    },
                      function (error) {
                          alert('Error');
                      })
                });
                }
     $scope.init(); //call function while loading controller
        }]);
    

    当部分渲染时它已经运行了,因为应该运行
    Angularjs
    源来定义
    控制器
    和…,但是您可以设置一个
    条件
    ,当
    菜单
    完成时,它会显示
    @RenderBody()
    您可以给我一些示例。。我仍然无法理解如何定义条件来强制角js在查看加载之前运行我想他/她知道这一点!查看
    HTML
    =>
    <!DOCTYPE html>
    <html ng-app="myApp1">
    <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>@ViewBag.Title - My ASP.NET Application</title>
        <link href="~/Content/Site.css" rel="stylesheet" type="text/css" />
        <link href="~/Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
        <script src="~/Scripts/jquery-1.12.4.min.js"></script>
        <script src="~/Scripts/jquery-ui-1.12.1.min.js"></script>
        <script src="~/Scripts/jquery.unobtrusive-ajax.min.js"></script>
        <script src="~/Scripts/angular.min.js"></script>
        <script src="~/Scripts/JS/Module.js"></script>
        <script src="~/Scripts/JS/Service.js"></script>
        <script src="~/Scripts/JS/Controller.js"></script>
    
    </head>
    <body class="" style="">    
        <div class="navbar navbar-inverse navbar-fixed-top">
            <div class="container">
                <div id="navbarid" class="collapse navbar-collapse">
    
                        <div ng-controller="menuController" ng-init="init()" ng-view>
                            <ul class="main-navigation">
                                <li class="dropdown" ng-repeat="menu in SiteMenu | filter : {ParentMenuId: 0}:true" ng-include="'treeMenu'"></li>
                                <li style="float:right;"><a href="../Userlogins/SignIn">Log Out</a></li>
                            </ul>
                            <script type="text/ng-template" id="treeMenu">
                                <a href="{{menu.Url}}">{{menu.Name}}</a>
                                <ul ng-if="(SiteMenu | filter : {ParentMenuId : menu.MenuItemId}:true).length > 0" style="line-height:1px;">
    
                                    <li id="submenuitem" ng-repeat="menu in SiteMenu | filter : {ParentMenuId : menu.MenuItemId}:true" ng-include="'treeMenu'" style="border-bottom:1px solid white;"></li>
                                </ul>
                            </script>
                        </div>
    
                </div>
            </div>
            <div class="navbar-collapse collapse">
                <ul class="nav navbar-nav"></ul>
            </div>
        </div>
    
        <div class="container body-content">
            @RenderBody()
    
        </div>
    
    @RenderSection("Scripts", false)
    
        app.controller('menuController', ['$scope', '$http', function ($scope, $http) {
            $scope.init = function () {
                angular.element(document).ready(function () {
                    $scope.SiteMenu = [];
                       $http.get('http://localhost:9585/admin/menulist').then(function (data) {
                           debugger;
                           if (data.data != "" && data.data != "1") {
                               $scope.SiteMenu = data.data;
                           }
                           else
                               window.location="/UserLogins/SignIn"
                    },
                      function (error) {
                          alert('Error');
                      })
                });
                }
     $scope.init(); //call function while loading controller
        }]);