我正在使用Vue.js,正在创建使用形状图案作为背景的SVG。图案工作正常,但是每当我尝试通过传递道具来动态更改图案填充的颜色时,它都将不起作用。我肯定我要传递的道具是正确的,因为我正在其他地方使用它。
<pattern
id="TrianglePattern"
patternUnits="userSpaceOnUse"
x="0"
y="0"
width="1500"
height="1500"
viewBox="0 0 10 10">
<path
d="M 0 0 L 7 0 L 3.5 7 z"
:fill="groupDetails.color ? groupDetails.color : '#ffffff'"
stroke="blue" />
</pattern>
答案 0 :(得分:0)
在这里工作正常:
new Vue({
el: '#app',
data: {
groupDetails: {
color: 'red'
}
}
});
label, input {
cursor: pointer;
}
<script src="//unpkg.com/vue@2"></script>
<main id="app">
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="100">
<pattern id="TrianglePattern"
patternUnits="userSpaceOnUse"
x="0" y="0" width="150" height="150"
viewBox="0 0 10 10">
<path d="M 0 0 L 7 0 L 3.5 7 z"
:fill="groupDetails.color ? groupDetails.color : '#ffffff'"
stroke="blue" />
</pattern>
<path d="M100,10 a90,40 0 1,0 .1,0 z" fill="url(#TrianglePattern)" stroke="black" />
</svg>
<div>
<label><input type="radio" v-model="groupDetails.color" value="red"/> Red</label>
<label><input type="radio" v-model="groupDetails.color" value="green"/> Green</label>
<label><input type="radio" v-model="groupDetails.color" value="blue"/> Blue</label>
<label><input type="radio" v-model="groupDetails.color" value="yellow"/> Yellow</label>
</div>
</main>