我想在共享按钮组件的:style指令中添加填充,但由于某些原因,这些更改没有显示在按钮上。
我试着用下面的3种方法来应用这些变化,但是没有一种奏效。我是Vuejs的新手,无法找到问题所在。任何输入/建议都将不胜感激。
<Button
@on-click="currentStep = 2"
:text= "Next"
:style="'padding: 12px 15px 12px 15px'"
/>
<Button
@on-click="currentStep = 2"
:text= "Next"
:style="{ padding: '12px 15px 12px 15px' }"
/>
<Button
@on-click="currentStep = 2"
:text= "Next"
:style="myStyle"
/>
然后返回myStyle:{padding:'12px 15px 12px 15px '}在第三个的脚本中。
My Button. vue组件看起来如下所示:
<template>
{{ this.color }}
<button
@click="onClick"
:disabled="disabled"
class="begin-btn"
:style="backgroundColor + textColor"
>{{ text }}
</button>
</template>
<script>
export default {
name: 'ButtonComponent',
props: {
text: String,
disabled: Boolean,
width: String,
bgColor: String,
txtColor: String,
},
data() {
return {}
},
computed: {
backgroundColor(){
let bgColor = this.bgColor ? this.bgColor : '#d64ba1'
return "background: " + bgColor + ';';
},
textColor(){
let textColor = this.txtColor ? this.txtColor : '#ffffff'
return "color: " + textColor + ';';
}
},
methods: {
onClick() {
this.$emit("onClick");
},
},
}
</script>
<style scoped>
.begin-btn {
justify-content: center;
align-items: center;
border: 0px;
width: 100%;
height: 44px;
background: #d64ba1;
border-radius: 24px;
font-style: normal;
font-weight: 700;
font-size: 16px;
color: #ffffff;
}
</style>
4条答案
按热度按时间r8xiu3jd1#
您可以使用与其他属性相同的方法:定义一个用于填充的属性,并在组件的计算值中为设置默认值。
然后,用使用组件的另一个模板中所需的值覆盖该填充值:
SomeView.vue
UPDATE:你甚至不需要计算。下面的代码也可以很好地工作:
然后将所需的值传递给组件:
oxcyiej72#
请看下面的片段:
vwoqyblh3#
您绑定样式属性的方式是正确的,它应该可以工作:请参见此处的示例
在您的示例中,不起作用的是您的Button组件指定了another:style binding internally。您不能同时在内部和外部提供相同的属性。Vue必须选择一个,而Vue选择您的组件定义的属性。
t1rydlwq4#
1,使用类名
2、 prop 样式Str
按钮使用
按钮
3、 prop 样式对象
按钮