Vue系列: 如何通过组件的属性props设置样式
2016-12-23 14:47
1016 查看
比如我们要在vue中显示百度地图,然后将相关的代码包装成组件,然后需要由外部来设置组件的高度,关于props的介绍,可以参考:
http://cn.vuejs.org/guide/components.html#Props
所以我在该组件的内部添加了mapHeight属性,如下:
props:{
// 地图在该视图上的高度
mapHeight:{
type: Number,
default: 200
}
}
然后要在地图的div中通过样式设置该div的高度,,可以有以下三种方式:
第一种:
<div id="allmap" style="width: 100%; height: {{mapHeight}}px"></div>
使用这种方式在chrome中没问题,但是如果打开chrome的控制台就会发现vue给出如下警告,也就是在ie中会有问题。
vue.common.js?e881:1019 [Vue warn]: style="width: 100%; height: {{mapHeight}}px": interpolation in "style" attribute will cause the attribute to be discarded in Internet Explorer. Use v-bind:style instead.
第二种:
关于如何使用绑定方式来设置样式,可以参考:
http://cn.vuejs.org/guide/class-and-style.html#u5BF9_u8C61_u8BED_u6CD5-1
然后我设置的样式如下:
<div id="allmap" :style="{width: '100%', height: mapHeight + 'px'}"></div>
经过验证是OK的,可以正常显示。
第三种:
但是根据vue中的官方说法,
http://cn.vuejs.org/guide/class-and-style.html#u5BF9_u8C61_u8BED_u6CD5-1
使用样式对象的方式更好
<div id="allmap" v-bind:style="mapStyle"></div>
同时在data属性中添加如下属性:
data: function() {
return {
mapStyle: {
width: '100%',
height: this.mapHeight + 'px'
}
}
},
所以,最终选择第三种方式。
http://cn.vuejs.org/guide/components.html#Props
所以我在该组件的内部添加了mapHeight属性,如下:
props:{
// 地图在该视图上的高度
mapHeight:{
type: Number,
default: 200
}
}
然后要在地图的div中通过样式设置该div的高度,,可以有以下三种方式:
第一种:
<div id="allmap" style="width: 100%; height: {{mapHeight}}px"></div>
使用这种方式在chrome中没问题,但是如果打开chrome的控制台就会发现vue给出如下警告,也就是在ie中会有问题。
vue.common.js?e881:1019 [Vue warn]: style="width: 100%; height: {{mapHeight}}px": interpolation in "style" attribute will cause the attribute to be discarded in Internet Explorer. Use v-bind:style instead.
第二种:
关于如何使用绑定方式来设置样式,可以参考:
http://cn.vuejs.org/guide/class-and-style.html#u5BF9_u8C61_u8BED_u6CD5-1
然后我设置的样式如下:
<div id="allmap" :style="{width: '100%', height: mapHeight + 'px'}"></div>
经过验证是OK的,可以正常显示。
第三种:
但是根据vue中的官方说法,
http://cn.vuejs.org/guide/class-and-style.html#u5BF9_u8C61_u8BED_u6CD5-1
使用样式对象的方式更好
<div id="allmap" v-bind:style="mapStyle"></div>
同时在data属性中添加如下属性:
data: function() {
return {
mapStyle: {
width: '100%',
height: this.mapHeight + 'px'
}
}
},
所以,最终选择第三种方式。
相关文章推荐
- Vue系列: 如何通过组件的属性props设置样式
- vue父组件通过props如何向子组件传递方法详解
- Flex中如何通过verticalGap样式,设置VBox的各项间间距
- Flex中如何通过horizontalGap样式,设置TabBar控件各个Tab间空格间距
- Flex中如何通过selectedButtonTextStyleName样式,设置ToggleButtonBar选中按钮文本颜色
- Flex中如何通过tickValues属性,在程序中设置Slider坐标位置
- 通过通过分别配置 PagerStyle 和 PagerSettings 属性,自定义页导航的样式和设置
- Flex中如何通过tabWidth样式,设置TabBar每个Tab宽度
- Flex中如何利用getTabAt函数遍历TabNavigator容器的各个Tab,并且通过labelPlacement属性设置标签位置
- Flex中如何通过itemRollOverColor和itemSelectionColor样式给列图ColumnChart设置选中/未选颜色的例子
- Flex中如何遍历TabBar控件的各个Tab,并且通过labelPlacement属性设置标签位置
- Flex中如何通过tabStyleName, tabWidth和textAlign样式,设置TabBar控件内文本对齐方式
- Flex(gumbo)中如何通过lineThrough样式,设置删除线TextGraphic
- Flex中如何通过displayAsPassword属性,设置TextInput文本显示密码形式(*)
- Flex Gumbo中如何通过baseColor样式,设置FxHScrollBar背景颜色
- Flex中如何通过给openItems属性,设置一个XMLList或Array对象来打开Tree的一个节点
- Flex Gumbo中如何通过textAlpha样式,设置TextGraphic透明度
- Flex中如何通过设置selectedDate属性设定DateChooser控件中被选择日期的例子
- Flex中如何通过titleStyleName和textIndent样式,设置Panel的标题
- Flex中如何通过backgroundImage, backgroundColor和backgroundAlpha样式,设置VBox的背景图片和背景颜色以及改变透明度