VueJS - using mustache template strings inside href attribute
如何在vue上下文的href属性内插入小胡子?
这些都是我一直试图在我的代码中实现的所有答案
在href
内的小胡子
如何将Vue数据中的值传递给href?
https://www.reddit.com/r/vuejs/comments/4ws0px/why_using_vbindhref_rather_than_a_href_string_a/
我的代码示例现在是:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | ... <ul> <li v-for="menuItems in MenuItems" class="nav-item"> <a class="nav-link" v-bind:href="{{ & menuItems.url}}" aria-label="blah" >{{ menuItems.text }}</a > </li> </ul> ... export default { name: 'Nav', data: { menuItems: [ {text: 'Item 1', url: '/item-1'}, {text: 'Item 2', url: '/item-2'}, {text: 'Item 3', url: '/item-3'}, {text: 'Item 4', url: '/item-4'} ] } } ... |
我尝试过:
1.
1 2 3 4 5 6 | <a class="nav-link" v-bind:href="{{ & menuItems.url}}" aria-label="blah" >{{ menuItems.text }}</a > |
1 2 3 4 5 6 | <a class="nav-link" v-bind:href="menuItems.url" aria-label="blah" >{{ menuItems.text }}</a > |
1 2 3 4 5 6 | <a class="nav-link" v-bind:href="/menuItems.url/" aria-label="blah" >{{ menuItems.text }}</a > |
我要么得到:
Errors compiling template:
invalid expression: Unexpected token { in
1 {{ & menuItems.url}}Raw expression: v-bind:href="{{ & menuItems.url}}"
或完全空的
<DDPB1>
我在做什么错?这是怎么工作的?
假设您使用的是当前VueJS版本,则您链接的所有链接均与这种情况无关。在VueJS 1中使用了html属性中的双花括号,但是在VueJS 2中,它被称为v-bind的替换。 V-bind可以通过以下两种在功能上等效的方式在属性中使用:
1 |
和
1 |
带有双花括号的小胡子语法仍可在模板中使用,但不能在属性中使用。
绑定href的正确变体是
1 | v-bind:href="menuItem.url" |
但是您的问题可能是由于
1 | v-for="menuItems in MenuItems" |
您正在尝试枚举
1 2 3 4 | <li v-for="menuItem in menuItems"> {{ menuItem.text }} </li> |
您也可以尝试更改
1 2 3 4 5 6 7 8 | data: { menuItems: [ {text: 'Item 1', url: '/item-1'}, {text: 'Item 2', url: '/item-2'}, {text: 'Item 3', url: '/item-3'}, {text: 'Item 4', url: '/item-4'} ] } |
变成
1 2 3 4 5 6 7 8 9 10 | data: function () { return { menuItems: [ {text: 'Item 1', url: '/item-1'}, {text: 'Item 2', url: '/item-2'}, {text: 'Item 3', url: '/item-3'}, {text: 'Item 4', url: '/item-4'} ] } } |
对于我来说,这对我有效:
v-bind:href =" / post / post.slug"
我有一条laravel路线,并使用了它。
过去我曾使用nunjucks遇到此问题。对我来说,解决方案是从href:
中删除
1 2 3 4 5 6 7 8 9 | <li v-for="menuItems in MenuItems" class="nav-item"> <a class="nav-link" href="{{ & menuItems.url}}" aria-label="blah" >{{ menuItems.text }}</a > </li> |
以下代码有效。 Codepen:https://codepen.io/anon/pen/bZQZdK
1 2 3 4 5 6 7 8 9 10 11 | <ul> <li v-for="menuItem in menuItems" class="nav-item"> <a class="nav-link" v-bind:href="menuItem.url" aria-label="blah">{{ menuItem.text }} </li> </ul> |
您的v-for中有一个错字,您需要menuItems,其下m
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | <ul> <li v-for="menuItem in menuItems" class="nav-item"> <a class="nav-link" v-bind:href="menuItem.url" aria-label="blah" >{{ menuItem.text }}</a > </li> </ul> |
也将数据更改为方法
1 2 3 4 5 | data () { return { .... } } |