angular js的路由和传参

本文介绍了一个使用AngularJS实现的简单网站示例,重点展示了如何配置路由和创建不同的控制器来管理首页、关于我们及联系我们等页面。此外,还介绍了如何通过URL参数传递信息并在控制器中处理这些参数。
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>web站点入口页面</title>
    <link rel="stylesheet" href="css/bootstrap.min.css"/>
    <link rel="stylesheet" href="css/font-awesome.css"/>
    <script src="js/angular.js"></script>
    <script src="js/angular-route.js"></script>
    <script>
        // 创建一个主模块 - 注意添加对ngRoute路由模块的依赖
        var myapp = angular.module("myapp", ["ngRoute"]);
        // 路由配置
        myapp.config(function($routeProvider){
            $routeProvider.when("/",{
                "templateUrl":"pages/home.html",
                "controller":"homeCtrl"
            }).when("/about",{
                "templateUrl":"pages/about.html",
                "controller":"aboutCtrl"
            }).when("/contact",{
                "templateUrl":"pages/contact.html",
                "controller":"contactCtrl"
            }).when("/contact/:name",{
                "templateUrl":"pages/contact.html",
                "controller":"contactCtrl"
            })
        });
        // 注册多个控制器
        myapp.controller("homeCtrl",function($scope){
            $scope.message="这是首页"
        });
        myapp.controller("aboutCtrl",function($scope){
            $scope.message="这是about页"
        });
       //$routeparams 是用来注入传参
       myapp.controller("contactCtrl",function($scope,$routeParams){
            $scope.message="这是contactCtrl页";
            console.log($routeParams);
            if($routeParams.name=="a"){
                $scope.title="我想告诉";
            }else if($routeParams.name=="b"){
                $scope.title="我想询价";
            }
        });
    </script>
</head>
<body ng-app="myapp">
<header>
    <nav class="navbar navbar-default">
        <div class="container">
            <div class="navbar-header">
                <a class="navbar-brand" href="#/">我的站点</a>
            </div>
            <ul class="nav navbar-nav navbar-right">
                <li><a href="#/"><i class="fa fa-home"></i>主页</a></li>
                <li><a href="#about"><i class="fa fa-shield"></i> 关于我们</a></li>
                <li><a href="#contact"><i class="fa fa-comment"></i> 联系我们</a></li>
            </ul>
        </div>
    </nav>
</header>
<div id="main">
    <!--子视图切换在这里-->
    <div ng-view></div>
</div>
</body>
</html>


//about 页面 配合传参
<div class="jumbotron text-center">
    <h1>About Page</h1>
    <p>这里显示消息</p>
    <p>{{message}}</p>
    <p>{{hello}}</p>
    <div>
        <p>如果您想了解更多有关我们<a href="#contact/a">请告诉我们</a>.</p>
        <p>如果您想要一个免费报价,请致电我们,或者通过<a href="#contact/b">询价</a>.</p>
    </div>
</div>

//这是contact页面把参数传递到这个页面
<div class="jumbotron text-center">
    <h1>这里显示消息</h1>
    <p>{{message}}</p>
    <p>{{hello}}</p>
    <form style="width:25%;margin:auto;" role="form">
        <div class="form-group">
            <input type="text" class="form-control"
                   id="subject" placeholder="aa"
                   ng-model="title">
        </div>
        <div class="form-group">
            <textarea class="form-control" id="message" placeholder="Message"></textarea>
        </div>
        <button type="submit" class="btn btn-default">发送信息</button>
    </form>
</div>

//这是home页面默认的页面
<div class="jumbotron text-center">
    <h1>Home Page</h1>
    <p>这是Home页面</p>
    <p>{{message}}</p>
    <p>{{hello}}</p>
</div>




<think>好的,用户想了解不同框架中实现路由传参的方法示例代码。我需要先整理已有的引用内容,然后结合其他框架的知识来补充回答。 首先,引用里提到了Vue Router的动态路由参数、查询字符串参数、路由守卫传参、命名路由组合参数。Umi3的约定式路由传参方式,以及Flask的路由设置。这些可以作为基础。 接下来,用户需要不同框架的示例,可能需要补充React RouterAngular的例子。React Router使用useParamsuseSearchParams,Angular使用ActivatedRoute服务。我需要确保语法正确,代码示例符合各框架的规范。 还要注意引用标记,比如在Vue部分引用[^1][^2],Umi3引用[^3],Flask引用[^4]。其他框架的部分因为没有引用来源,可能需要避免添加引用标记,或者说明是通用方法。 需要检查每个框架的传参方式是否全面,比如动态参数、查询参数、编程式导航等。代码示例要简洁,正确,比如React中使用函数组件Hooks,Angular中使用构造函数注入ActivatedRoute。 最后,相关问题部分需要生成与路由传参相关的问题,涵盖不同框架、性能优化、参数获取、安全性等。确保问题有针对性,帮助用户深入理解。</think>### 不同框架路由传参方式及示例代码 路由传参是实现页面间数据传递的核心技术,不同框架的实现方式有所差异。以下是常见框架的传参方法: --- #### **1. Vue Router** **动态路由参数** 定义动态路径参数: ```javascript // 路由配置 { path: '/user/:id', component: User } ``` 组件中通过`$route.params`获取: ```javascript // User.vue export default { mounted() { console.log(this.$route.params.id); // 输出当前id } } ``` 监听参数变化需使用`watch`: ```javascript watch: { $route(to) { console.log('新参数:', to.params.id); } } ``` [^2] **查询字符串参数** 通过`?key=value`传递参数: ```javascript // 导航跳转 this.$router.push({ path: '/search', query: { keyword: 'vue' } }); ``` 组件中通过`$route.query`获取: ```javascript console.log(this.$route.query.keyword); // 输出"vue" ``` --- #### **2. React Router (v6+)** **动态参数** 路由配置: ```jsx <Route path="/user/:id" element={<User />} /> ``` 组件中通过`useParams`获取: ```jsx import { useParams } from 'react-router-dom'; function User() { const { id } = useParams(); return <div>ID: {id}</div>; } ``` **查询参数** 使用`useSearchParams`: ```jsx import { useSearchParams } from 'react-router-dom'; function Search() { const [searchParams] = useSearchParams(); const keyword = searchParams.get('keyword'); return <div>关键词: {keyword}</div>; } ``` --- #### **3. Umi3 (基于React)** **约定式路由传参** 文件结构自动生成路由: ``` src/pages ├── user/[id].tsx // 动态路由 └── search.tsx // 查询参数 ``` 组件中通过`useParams``useLocation`获取参数: ```typescript // [id].tsx import { useParams } from 'umi'; const { id } = useParams(); // search.tsx import { useLocation } from 'umi'; const { search } = useLocation(); const params = new URLSearchParams(search); console.log(params.get('keyword')); ``` [^3] --- #### **4. Angular** **动态路由参数** 路由配置: ```typescript { path: 'user/:id', component: UserComponent } ``` 通过`ActivatedRoute`获取参数: ```typescript import { ActivatedRoute } from '@angular/router'; constructor(private route: ActivatedRoute) { this.route.params.subscribe(params => { console.log(params['id']); }); } ``` **查询参数** 通过`queryParams`传递: ```typescript // 导航 this.router.navigate(['/search'], { queryParams: { keyword: 'angular' } }); // 获取参数 this.route.queryParams.subscribe(params => { console.log(params['keyword']); }); ``` --- #### **5. Flask (Python)** **动态参数** 路由定义: ```python @app.route('/user/<int:id>') def user(id): return f"User ID: {id}" ``` **查询参数** 通过`request.args`获取: ```python from flask import request @app.route('/search') def search(): keyword = request.args.get('keyword') return f"搜索词: {keyword}" ``` [^4] --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值