【问题标题】:need understanding for Angular routing's when method需要了解 Angular 路由的 when 方法
【发布时间】:2016-08-09 06:03:26
【问题描述】:

大家好,我是 angularJs 的新手,我发现很难理解路由概念,我从很多来源学到了,但仍然不太清楚特别是 when 方法。我的理解是路由帮助我们实现单页应用,这意味着浏览器只加载一个 .html 文件,然后根据用户的交互删除或添加其他内容,不会加载其他文件。但在以下链接中的定义angular routing

templateUrl:当要显示的 HTML 复杂且庞大时,最好将它们分解为单独的模板/文件,并将 HTML 文件的 URL 作为 templateUrl 给出。 AngularJS 在需要显示特定路由时从服务器加载 HTML 文件。

它说 angularjs 将 HTML 文件加载为 templateUrl。有人可以向我解释一下吗?

【问题讨论】:

    标签: javascript html angularjs single-page-application


    【解决方案1】:

    1. templateUrl 属性告诉 AngularJS 应该使用 ngView 指令在 div 中加载和显示哪个 HTML 模板。

    2.可以是路径(或)函数,.when() 方法接受路径和路由作为参数。

    3.它可以用作返回生成URL的函数。我们可以通过传入路由的参数来操作 url。

    .when('/:screenName/getAll',{
        templateUrl: function(route){
             return route.screenName +'/getAllList'
        }
    })
    

    所以,它不像重新加载整个 html 页面。只有在 div.. 中加载了 html 内容。希望有所帮助。!!!

    【讨论】:

    • 好吧...我明白这一点,但即使 ajax 也这样做了,那么为什么我们有路由.. 对不起,我有点困惑 ajax 和路由有什么不同?
    • 路由是一个软件查看 URL 并使用它来决定运行哪段代码的过程。路由不是 Ajax 的替代品,它是可以触发 Ajax 的东西。
    【解决方案2】:

    例如:

    //main.js
    $routeProvider.when('/computers', {
        templateUrl: 'views/computers.html',
    });
    
    
    //./views/computers.html
    <ul>
        <li>Computer 1</li>
        <li>Computer 2</li>
    </ul>
    

    当路由为http://example.com/#/computers时,AngularJs会通过ajax加载./views/computers.html文件,并为其他请求缓存。因此,在您的 SPA 中加载的不仅仅是一个(主要)html 文件。

    【讨论】:

      【解决方案3】:

      Angular 将 html 文件作为模板 url 加载意味着它使用您提供的路径来加载 html。与在 Angular 组件中编写 html 相比,这将更有条理。

      单页应用程序并不意味着只加载一个文件。当用户交互时,可能会执行路由,加载更多的数据,加载更多的html或者部分html结合数据呈现给用户。

      “when”方法是指当用户访问一个定义好的路由时,接下来的事情会继续进行,包括“templateUrl”。

      【讨论】:

        猜你喜欢
        • 2020-09-13
        • 1970-01-01
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多