[vuejs/vue-router]v-link的参数不支持对象吗?

2024-01-03 466 views
7

urlObj = { name: 'vod-seriesVvDetail', params : { pid: id, channel: data[i].cid, pname: name, isMpp: data[i].isMpp, time: paramFactory.getTime(), dateNum: paramFactory.getDateNum(), terminal: paramFactory.getTerminal(), playType: paramFactory.getPlayType() } } url = <a v-link="{name: ${name}, params: ${urlObj.params}}">${name}</a>

在js里面拼出来url,然后渲染出来的结果是: <a v-link="{name: 标题测试, params: [object Object]}">标题测试</a> 请问有什么办法能传递对象给v-link吗? 这样就不用拼这么长的url了

回答

4

html

<a v-link="{ name: 'test', query: this.urlObj }">test</a>

data

data () {
      return {
        isShowPicker: true,
        isAgree: false,
        urlObj: {
          userId: 1234,
          age: 24,
          name: 'liujb'
        },
        items: []
      }
    }

得到结果

<a href="#!/test?age=24&name=liujb&userId=1234" class="v-link-active">Test</a>

不知道是不是你要的效果。

4

但是如果我想这样呢?

router.map({ '/edit/:id' })

然后我 router 传递的时候需要传递一个 { id: id, name: name, age: age }

这样的一个数据,必须要设置router的 alias 才行吗?才能让 url 看着好看,数据也传递过去了

8

不支持对象。 比如说,你有'/foo/bar'这个链接,别人点这个链接想要打开这个app。 这个时候怎么传这个对象?他没有没有打开过应用,没有点击过任何东西。 所以路由参数只能是字符串,因为它是从url里传进来的。

9

@liujb 对的 我要的就是这样的效果 谢谢啦

3

<a v-link="{name: ${name},query: ${urlObj.params}}">${name}</a>这样可以传对象