GVKun编程网logo

vue组件之间通过query传递参数(vue组件之间的参数传递)

9

在本文中,我们将给您介绍关于vue组件之间通过query传递参数的详细内容,并且为您解答vue组件之间的参数传递的相关问题,此外,我们还将为您提供关于Jquery–使用jquery传递asp按钮命令参

在本文中,我们将给您介绍关于vue组件之间通过query传递参数的详细内容,并且为您解答vue组件之间的参数传递的相关问题,此外,我们还将为您提供关于Jquery – 使用jquery传递asp按钮命令参数、Vue Router 如何传递参数(针对问题:Vue Router 传递参数,刷新页面后参数消失)、vue 中组件与组件之间通信的方式、Vue 路由传参-使用query方式传递参数的知识。

本文目录一览:

vue组件之间通过query传递参数(vue组件之间的参数传递)

vue组件之间通过query传递参数(vue组件之间的参数传递)

需求:

任务列表进入 任务详情 ,向详情页传递当前 mission_id

路由关系:

//查看任务列表
    {
        path: ''/worklist'',
        name: ''worklist'',
        component: worklist,
    },
    //任务详情
    {
        path: ''/workdetails'',
        name: ''workdetails'',
        meta: {
            requireAuth: true //需要先登录
        },
        component: workdetails
    },

worklist.vue传递

<router-link :to="{
      path: ''/workdetails'',
      query: {
          mission_id: index.mission_id //当前missionID
       }
    }"
 class="aaalistlink">
  <el-button icon="el-icon-search" circle type="danger" class="check"></el-button>
</router-link>

workdetails.vue 中接收参数

var data = {
    mission_id :  this.$route.query.mission_id, //传递的missionID
    user_id :  this.$store.state.user_id
}

 

Jquery – 使用jquery传递asp按钮命令参数

Jquery – 使用jquery传递asp按钮命令参数

我有asp按钮:
<asp:button ID="btn1" runat="server" CommandArgument="" CssOnClick="button_click"></asp:button>

和脚本:

$("a").click(function () {
            var val = $(this).attr('id').toString();                            
            $('.btn1').attr('CommandArgument',val);
            alert($('.btn1').attr('CommandArgument').toString());
            $('.btn1').click();
        });

点击后它会提醒我命令参数.但是在下一步 – 当我触发btn1点击jquery时,它转到codebehind并且命令参数为空.我可以用jquery以某种方式传递命令参数吗?

我试图将值保存到全局变量但是在回发后它们都是空的.我不想使用cookie或viewstate.

谢谢!

解决方法

CommandArgument完全是服务器端属性,不呈现任何html属性.因此,您无法更改任何按钮的属性并点击它.好消息是您可以使用客户端__doPostBack函数触发回发并将您的自定义值作为第二个参数传递:
<script type="text/javascript">
    $("a").click(function () {
        var val = $(this).attr('id').toString();
        __doPostBack("<%= btn1.UniqueID %>",val);
    });
</script>

并且您可以从Request.Form集合中获取服务器单击处理程序中的传递参数:

protected void button_click(object sender,EventArgs e)
{
    var argument = Request.Form["__EVENTARGUMENT"];
}

如果上面的脚本不起作用,那么可能没有在页面上定义__doPostBack函数.在这种情况下,将此代码添加到Page_PreRender方法:ClientScript.GetPostBackEventReference(btn1,string.Empty);这将迫使页面在页面上定义__doPostBack方法.

Vue Router 如何传递参数(针对问题:Vue Router 传递参数,刷新页面后参数消失)

Vue Router 如何传递参数(针对问题:Vue Router 传递参数,刷新页面后参数消失)

由于工作需要最近学习vue.js的使用做前后端分离的项目。因为是边使用边学习,因此会遇到很多很多问题,所以决定总结一些问题并记录下来:

vue Router传参数的方式以及注意事项:

遇到的问题:Vue Router 传递参数,刷新页面后参数消失

参考1:Router 传递参数后,刷新页面 对象参数消失,求解。

参考2:vue router 如何使用params query传参,以及有什么区别

传参是前端经常需要用的一个操作,很多场景都会需要用到上个页面的参数,本文将会详细介绍vue router 是如何进行传参的,以及一些小细节问题。

Vue router如何传参

params、query是什么?

params:/router1/:id ,/router1/123,/router1/789 ,这里的id叫做params

query:/router1?id=123 ,/router1?id=456 ,这里的id叫做query。

路由界面:

router.js:

路由设置这里,当你使用params方法传参的时候,要在路由后面加参数名,并且传参的时候,参数名要跟路由后面设置的参数名对应。使用query方法,就没有这种限制,直接在跳转里面用就可以。

 

 

注意:如果路由上面不写参数,也是可以传过去的,但不会在url上面显示出你的参数,并且当你跳到别的页面或者刷新页面的时候参数会丢失(如下图所示),那依赖这个参数的http请求或者其他操作就会失败。

 

 

注意看上面的路由参数,id这个参数是我们有设置在路由上面的,id2我没有设置在路由里面,所以刷新之后id2就不见了,在项目中,我们总不可能要求用户不能刷新吧。

组件1:

<template>
  <div>
    <h1>从这个路由传参到别的路由</h1>
    <router-link :to="{ name:''router1'',params: { id: status ,id2: status3},query: { queryId:  status2 }}" >
      router-link跳转router1
    </router-link>
  </div>
</template>
<script>
export default {
  name: ''app_page'',
  data () {
    return {
      status:110,
      status2:120,
      status3:119
    }
  },
}
</script>
 

编程式导航跳转:

上面的router-link传参,也可以使用router文档里面的编程式导航来跳转传参。

this.$router.push({  name:''router1'',params: { id: status ,id2: status3},query: { queryId:  status2 }});
//编程跳转写在一个函数里面,通过click等方法来触发复制代码

这两种传参效果是一模一样的,编程式导航,可以用来做判断跳转,比如是否授权,是否登录,等等状态,对此不太了解的小伙伴们,可以跳过这个编程式导航,以后再来看。

组件2:

<template>
  <div class="router1">
    <h1>接收参数的路由</h1>
    <h1> params.id:{{ $route.params }}</h1>
    <h1>query.status:{{ $route.query.queryId }}</h1>
    <keep-alive>
      <router-view></router-view>
    </keep-alive>
  </div>
</template>
 

传参还是比较简单的,按着上面组件的使用方法就可以成功传过去了。

提示:获取路由上面的参数,用的是$route,后面没有r。

params传参和query传参有什么区别:

 

 

1、params是路由的一部分,必须要有。query是拼接在url后面的参数,没有也没关系。

params一旦设置在路由,params就是路由的一部分如果这个路由有params传参,但是在跳转的时候没有传这个参数,会导致跳转失败或者页面会没有内容。

比如:跳转/router1/:id

<router-link :to="{ name:''router1'',params: { id: status}}" >正确</router-link>
    <router-link :to="{ name:''router1'',params: { id2: status}}">错误</router-link>

2、params、query不设置也可以传参,但是params不设置的时候,刷新页面或者返回参数会丢失,query并不会出现这种情况,这一点的在上面说过了

vue 中组件与组件之间通信的方式

vue 中组件与组件之间通信的方式

1. vue 中组件与组件之间通信的方式?
父 -> 子 prop
子 -> 父 子通过 $emit 触发一个自定义事件 。 父在调用这个子组件的时候,监听这个自定义事件即可

下面这两种能实现,但是很繁琐。我们有更好的方式叫做中央事件处理器或者 vuex
兄 -> 弟 要通过父亲来操作
表兄 -> 表弟 要通过爷爷


还有一些非常非常特殊的使用方式,一般不推荐使用:
1. $root 能够获取到根组件的实例对象
2. $parent 获取父组件的实例对象
3. $children 获取子组件们的实例对象集合 []

4. $refs 获取具体某个子组件的实例或者具体某个 html 元素的真实 dom。(这个东西在获取具体某个 html 元素的时候常用。。。)
4.1 首先需要标记。你想要获取的组件或者 html 元素,在他们身上定义一个 ref="xxx"
4.2 然后 this.$refs.xxx

如果 ref 标记的是普通 html 元素,那么到通过 $refs.xxx 得到的将是 这个 html 元素的 dom 对象

如果 ref 标记的是一个子组件。那么 通过 $refs.xxx 得到的将是这个 子组件的 实例对象
 
//代码视例
<script> Vue.component("parent", { data() { return { name: "张小三" }; }, template: ` <div class="parent"> <h1 ref="box2">我是 parent , 我的名字是 {{ name }}</h1> </div> `, created() { console.log(this.$children); } }); let vm = new Vue({ el: "#app", data: { name: "张三丰" }, template: ` <div id="app" class="root"> <button @click="fn1">获取h1的真实dom对象</button> <h1 ref="box">我是老祖宗,根组件,我的名字是 {{ name }}</h1> <parent ref="box2" ></parent> </div> `, methods: { fn1() { // 该如何获取 当前这个组件的 h1 的dom对象 1. console.log(document.getElementById("box")); // 不推荐使用,有副作用 2. console.log(this.$el.querySelector("#box")); // 可以使用,不会有副作用 // 3. 最推荐的方式 console.log(this.$refs["box"]); console.log(this.$refs.box2); // ? 需要获取到 parent 组件中 h1 标签的那个dom对象 console.log(this.$refs["box2"].$el.querySelector("h1")); console.log(this.$refs["box2"].$refs["box2"]); } } }); </script>

 

Vue 路由传参-使用query方式传递参数

Vue 路由传参-使用query方式传递参数

2018-08-15

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../vue.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
</head>
<body>
<div id="app">
{{mes}}
<router-link to="/login?id=10">登录</router-link>
<router-link to="/register">注册</router-link>
<router-view></router-view>
</div>
</body>
<script>
var login = {
template: "<div>我是登录组件</div>",
created(){
console.log(this.$route);
}
};
var register = {
template: "<div>我是注册组件</div>",
};
var router = new VueRouter({
routes: [
{path: "/login", component: login},
{path: "/register", component: register}
]
});
new Vue({
el: "#app",
data: {
mes: "hello Vue"
},
components: {
login,
register
},
router
});
</script>
</html>
 
   


console.log(this.$route.query.id); 获取id的值10组件模板直接获取  多个参数可在路径后面直接添加                &

 

 

 -                                                                                                -------------------------------------------第二种方式-----------------------------------------------

 

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
<script src="../vue.js"></script>
<script src="https://cdn.bootcss.com/vue-router/3.0.1/vue-router.min.js"></script>
</head>
<body>
<div id="app">
{{mes}}
<router-link to="/login/123/ls">登录</router-link>
<router-link to="/register">注册</router-link>
<router-view></router-view>
</div>
</body>
<script>
var login = {
template: "<div>我是登录组件</div>",
created(){
console.log(this.$route.params.id);
console.log(this.$route.params.name);

}
};
var register = {
template: "<div>我是注册组件</div>",
};
var router = new VueRouter({
routes: [
{path: "/login/:id/:name", component: login},
{path: "/register", component: register}
]
});
new Vue({
el: "#app",
data: {
mes: "hello Vue"
},
components: {
login,
register
},
router
});
</script>
</html>

 

 

关于vue组件之间通过query传递参数vue组件之间的参数传递的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于Jquery – 使用jquery传递asp按钮命令参数、Vue Router 如何传递参数(针对问题:Vue Router 传递参数,刷新页面后参数消失)、vue 中组件与组件之间通信的方式、Vue 路由传参-使用query方式传递参数等相关知识的信息别忘了在本站进行查找喔。

本文标签: