te')); return $arr; } /* 遍历用户所有主题 * @param $uid 用户ID * @param int $page 页数 * @param int $pagesize 每页记录条数 * @param bool $desc 排序方式 TRUE降序 FALSE升序 * @param string $key 返回的数组用那一列的值作为 key * @param array $col 查询哪些列 */ function thread_tid_find_by_uid($uid, $page = 1, $pagesize = 1000, $desc = TRUE, $key = 'tid', $col = array()) { if (empty($uid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('uid' => $uid), array('tid' => $orderby), $page, $pagesize, $key, $col); return $arr; } // 遍历栏目下tid 支持数组 $fid = array(1,2,3) function thread_tid_find_by_fid($fid, $page = 1, $pagesize = 1000, $desc = TRUE) { if (empty($fid)) return array(); $orderby = TRUE == $desc ? -1 : 1; $arr = thread_tid__find($cond = array('fid' => $fid), array('tid' => $orderby), $page, $pagesize, 'tid', array('tid', 'verify_date')); return $arr; } function thread_tid_delete($tid) { if (empty($tid)) return FALSE; $r = thread_tid__delete(array('tid' => $tid)); return $r; } function thread_tid_count() { $n = thread_tid__count(); return $n; } // 统计用户主题数 大数量下严谨使用非主键统计 function thread_uid_count($uid) { $n = thread_tid__count(array('uid' => $uid)); return $n; } // 统计栏目主题数 大数量下严谨使用非主键统计 function thread_fid_count($fid) { $n = thread_tid__count(array('fid' => $fid)); return $n; } ?>javascript - How do I pass Array in $router.push in Vue.js? - Stack Overflow
最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How do I pass Array in $router.push in Vue.js? - Stack Overflow

programmeradmin2浏览0评论

I want to pass data through function of VUE to a new page on click of a button. I tried doing this thing using the router method but i was not able to send the array it was just allowing me to send a string with it.

this.$router.push({
    name: "SalesInvoice",
    params: { SalesInvoice: this.stockmaster }
  });

this thing is not working beacuse the stockmaster is an array.

this.$router.push({
    name: "SalesInvoice",
    params: { SalesInvoice: "abc" }
  });

the same thing i did with string and it worked. so is there any way of sending array to next page using vue method.

I want to pass data through function of VUE to a new page on click of a button. I tried doing this thing using the router method but i was not able to send the array it was just allowing me to send a string with it.

this.$router.push({
    name: "SalesInvoice",
    params: { SalesInvoice: this.stockmaster }
  });

this thing is not working beacuse the stockmaster is an array.

this.$router.push({
    name: "SalesInvoice",
    params: { SalesInvoice: "abc" }
  });

the same thing i did with string and it worked. so is there any way of sending array to next page using vue method.

Share Improve this question edited Jan 7, 2020 at 12:31 tereško 58.4k25 gold badges100 silver badges150 bronze badges asked Jan 7, 2020 at 11:48 Bhavin KalalBhavin Kalal 2141 gold badge2 silver badges13 bronze badges 6
  • 2 try sending JSON.stringify(this.stockmaster) and then parse it wherever you want to get it – Muhammad Usman Commented Jan 7, 2020 at 11:54
  • how can we do this ? can you guide me with the code? – Bhavin Kalal Commented Jan 7, 2020 at 11:55
  • 3 this.$router.push({ name: "SalesInvoice", params: { SalesInvoice: JSON.stringify(this.stockmaster ) } });. And please read about JSON.stringify as well – Muhammad Usman Commented Jan 7, 2020 at 11:56
  • thank you it really helped. – Bhavin Kalal Commented Jan 7, 2020 at 12:17
  • 1 @MuhammadUsman You rock man, thaanks a lot. – rpajaziti Commented Aug 10, 2021 at 13:07
 |  Show 1 more ment

2 Answers 2

Reset to default 6

Just adding my ment as an answer so others can get it easily in the future.

When you are trying to pass an array, object or array of objects to the router, you should first stringify your data with JSON.stringify and the pass it to the router. And then you can access it and parse it back to JSON with JSON.parse. For the particular case above, something like following should be done

this.$router.push({
    name: "SalesInvoice",
    params: { SalesInvoice: JSON.stringify(this.stockmaster) }
  });

For reference, I would not remend to use JSON as URL parameters, but rather use query parameters instead. If you want to send data from one request to the next, it is mon to use query parameters instead of route parameters.

In your case, change the code to

this.$router.push({
    name: "SalesInvoice",
    query: { SalesInvoice: "abc" }
  });

You can then change your route definition to be something like this

{
  path: 'sales-invoice', 
  name: 'SalesInvoice',
}

See, the path does not have any more :SalesInvoice in it. The route parameter is not necessary anymore, since you are now giving the data to the new route via query parameters. You can use as many query parameters as you like (actually, as many as the max length of a URL allows) without any need to define them in the route definition. This gives you more flexibility.

You can access query parameters similarly to route parameters by using this.$route.query.SalesInvoice.

发布评论

评论列表(0)

  1. 暂无评论