如何使用 Vue.js 将图像 url 绑定到 Framework7 列表项 "media" 属性?
How can I bind image url's to Framework7 list-item "media" attribute with Vue.js?
我正在使用 Framework7's Vue plugin 来显示推文列表。推文存储在 data():
的数组中
data () {
return {
tweets : []
}
}
标记 (Jade) 如下所示:
f7-list(media-list='', v-for='tweet in tweets')
f7-list-item(:title='tweet.text')
这非常有效,可以将数组中所有推文的列表打印到 GUI。 Framework7 中的 f7-list component 现在也允许添加这样的图像:
f7-list-item(media="<img src='image.jpg'>")
每张图片都存储在 tweets 数组中,如下所示:
tweet.user.profile_image_url
通常,我会做这样的事情来添加图像:
f7-list-item(media="<img src='{{tweet.user.profile_image_url}}'>")
不幸的是,这似乎不再可能了,因为我在控制台中收到来自 Vue 的错误消息:
template syntax error media="<img
src="{{tweet.user.profile_image_url}}">":
Interpolation inside attributes has been removed. Use v-bind or the
colon shorthand instead. For example, instead of <div id="{{
val }}">, use <div :id="val">.
如何在此处使用 v-bind 或 :media="..." 语法将图像 url 嵌入到媒体属性中?我能想到的就是直接绑定URL:
f7-list-item(:media='tweet.user.profile_image_url')
但这行不通,因为我需要以某种方式添加 <img>
标签。
解决方案是使用过滤器:
翡翠标记
f7-list-item(:media='tweet | imgFilter')
Vue 组件脚本
export default {
name: 'app',
data () {
return {
tweets : []
}
}
filters : {
imgFilter : function (tweet) {
return '<img src="' + filters.imgUrlFilter(tweet) + '">';
}
},
}
我正在使用 Framework7's Vue plugin 来显示推文列表。推文存储在 data():
的数组中data () {
return {
tweets : []
}
}
标记 (Jade) 如下所示:
f7-list(media-list='', v-for='tweet in tweets')
f7-list-item(:title='tweet.text')
这非常有效,可以将数组中所有推文的列表打印到 GUI。 Framework7 中的 f7-list component 现在也允许添加这样的图像:
f7-list-item(media="<img src='image.jpg'>")
每张图片都存储在 tweets 数组中,如下所示:
tweet.user.profile_image_url
通常,我会做这样的事情来添加图像:
f7-list-item(media="<img src='{{tweet.user.profile_image_url}}'>")
不幸的是,这似乎不再可能了,因为我在控制台中收到来自 Vue 的错误消息:
template syntax error media="<img src="{{tweet.user.profile_image_url}}">": Interpolation inside attributes has been removed. Use v-bind or the colon shorthand instead. For example, instead of <div id="{{ val }}">, use <div :id="val">.
如何在此处使用 v-bind 或 :media="..." 语法将图像 url 嵌入到媒体属性中?我能想到的就是直接绑定URL:
f7-list-item(:media='tweet.user.profile_image_url')
但这行不通,因为我需要以某种方式添加 <img>
标签。
解决方案是使用过滤器:
翡翠标记
f7-list-item(:media='tweet | imgFilter')
Vue 组件脚本
export default {
name: 'app',
data () {
return {
tweets : []
}
}
filters : {
imgFilter : function (tweet) {
return '<img src="' + filters.imgUrlFilter(tweet) + '">';
}
},
}