Angularjs 从单页应用开始

Angularjs 从单页应用开始,angularjs,asp.net-mvc-4,single-page-application,angularjs-routing,Angularjs,Asp.net Mvc 4,Single Page Application,Angularjs Routing,我是Angularjs的初学者,我已经下载了Angularjs的模板“AngularStart”。 它附带了一些内置文件。如homecontroller、AppjsFolder等 如果我有一个空的Mvc项目,我想知道如何从angularproject开始?此外,当我运行应用程序时,浏览器中的默认url为:“http:/somelocalAddress/#/home”。有谁能告诉我#是如何附加到url的,因为我可以看到route.config文件,但它没有 我知道Layout.cshtml中有一些

我是Angularjs的初学者,我已经下载了Angularjs的模板“AngularStart”。 它附带了一些内置文件。如homecontroller、AppjsFolder等

如果我有一个空的Mvc项目,我想知道如何从angularproject开始?此外,当我运行应用程序时,浏览器中的默认url为:“http:/somelocalAddress/#/home”。有谁能告诉我#是如何附加到url的,因为我可以看到route.config文件,但它没有

我知道Layout.cshtml中有一些锚定标记

 <li data-ng-class="{active : activeViewPath==='/home'}"><a href='#/home'>Home</a></li>
                    <li data-ng-class="{active : activeViewPath==='/demo'}"><a href="#/demo">Demo</a></li>
                    <li data-ng-class="{active : activeViewPath==='/angular'}"><a href='#/angular'>Learn Angular</a></li>
                    <li data-ng-class="{active : activeViewPath==='/about'}"><a href='#/about'>About</a></li>
                    <li data-ng-class="{active : activeViewPath==='/contact'}"><a href='#/contact'>Contact</a></li>
  • 在这里,anchortags的href附加了#,它表明url在单击锚定标记时得到了#,但当我运行应用程序时,为什么会有/#/Home

    请指导我。

    您使用的是角度模块。这是一个完整的ajax导航控制器。这意味着,当您在实际不去任何地方的路线中导航时,ngRoute会下载部分HTML,并在带有ng view属性的div中呈现它们,从而创建一种“虚假”(但高性能)的导航体验

    Angular使用#以避免浏览器在每次路由更改操作时加载整个页面。这就是为什么代码中的锚也使用了#

    您的代码似乎是一个菜单的摘录,可能是一个引导菜单,它希望根据当前路径将“active”类添加到相应的li部分。控制器可能正在使用服务,以便使用$location.path()方法找出当前路径。调用path()时,它返回不带“#”的当前路径,因此在ng类属性中也不使用它

    顺便说一句,您可能会激活的HTML5模式,而不使用前缀#和您的生活;)。它使用同样的技术,问题是你的用户需要使用现代浏览器,但我很确定你使用的其他依赖项也需要,是吗

    如何配置HTML5模式 您正在使用角度模块。这是一个完整的ajax导航控制器。这意味着,当您在实际不去任何地方的路线中导航时,ngRoute会下载部分HTML,并在带有ng view属性的div中呈现它们,从而创建一种“虚假”(但高性能)的导航体验

    Angular使用#以避免浏览器在每次路由更改操作时加载整个页面。这就是为什么代码中的锚也使用了#

    您的代码似乎是菜单的摘录,可能是引导菜单,它希望根据当前路径将“active”类添加到相应的li部分。控制器可能正在使用服务,以便使用$location.path()方法找出当前路径。调用path()时,它返回不带“#”的当前路径,因此在ng类属性中也不使用它

    顺便说一句,您可能会激活的HTML5模式,而不使用前缀#和您的生活;)。它使用同样的技术,问题是你的用户需要使用现代浏览器,但我很确定你使用的其他依赖项也需要,是吗

    如何配置HTML5模式
    angular.module('myApp',[
        ...
        'ngRoute'
        ...
    ])
        .config(function($routeProvider, $locationProvider){
            $routeProvider
                 .when('/path/to/my/route')
                 .otherwise({
                     redirectTo: '/'
                 });
            
            $locationProvider.html5Mode(true);
        });