如何使用 CSS 的对象填充 ng-style
How to populate ng-style with object of CSS
我构建了一个 CSS 对象,我定义了 CSS 属性 名称和值。目标是构建一个表单来操纵值并自动为用户直观地更新页面上的 CSS。
除了以一种优雅的方式实际实时设置项目样式外,我已经全部正常工作了。
这里是 link 示例 https://codepen.io/uncommonjoe/pen/KKXyzBp
这是我创建的我正在使用的对象
vm.card = [
{
class: "card",
properties: [
{
name: "background-color",
value: "#FFFFFF"
},
{
name: "border",
value: "1px solid #FFFFFF"
},
{
name: "border-radius",
value: "5px"
},
{
name: "box-shadow",
value: "0 0 26px rgb(0 0 0 / 20%)"
},
{
name: "margin",
value: "0"
},
{
name: "padding",
value: "0"
}
]
}
];
在 HTML 中,我使用 ng-repeat
构建表单控件
<div ng-repeat="card in vm.card">
<b>{{card.class}}</b>
<div ng-repeat="object in card.properties">
<label>{{object.name}}</label>
<input type="text" ng-model="object.value" />
</div>
</div>
这是项目的例子。如您所见,这不是动态的和可重用的。
<div class="card" style="width: 18rem;"
ng-style="{
'background-color': vm.card[0].properties[0].value,
'border': vm.card[0].properties[1].value,
'border-radius': vm.card[0].properties[2].value,
'box-shadow': vm.card[0].properties[3].value,
'margin': vm.card[0].properties[4].value,
'padding': vm.card[0].properties[5].value,
}">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
我需要一个好方法来做一个 ng-repeat
可以说在 ng-style
中拉动 name
并将其定义为 CSS 属性 和 value
作为值。
在你的控制器中定义一个样式器函数,然后从 ng-style 中调用它:
vm.styler=function(props){
var styles={};
props.forEach(css=>{
styles[css.name]=css.value
})
return styles;
}
在 ng 风格中:ng-style="vm.styler(vm.cardObj[0].properties)"
我构建了一个 CSS 对象,我定义了 CSS 属性 名称和值。目标是构建一个表单来操纵值并自动为用户直观地更新页面上的 CSS。
除了以一种优雅的方式实际实时设置项目样式外,我已经全部正常工作了。
这里是 link 示例 https://codepen.io/uncommonjoe/pen/KKXyzBp
这是我创建的我正在使用的对象
vm.card = [
{
class: "card",
properties: [
{
name: "background-color",
value: "#FFFFFF"
},
{
name: "border",
value: "1px solid #FFFFFF"
},
{
name: "border-radius",
value: "5px"
},
{
name: "box-shadow",
value: "0 0 26px rgb(0 0 0 / 20%)"
},
{
name: "margin",
value: "0"
},
{
name: "padding",
value: "0"
}
]
}
];
在 HTML 中,我使用 ng-repeat
构建表单控件
<div ng-repeat="card in vm.card">
<b>{{card.class}}</b>
<div ng-repeat="object in card.properties">
<label>{{object.name}}</label>
<input type="text" ng-model="object.value" />
</div>
</div>
这是项目的例子。如您所见,这不是动态的和可重用的。
<div class="card" style="width: 18rem;"
ng-style="{
'background-color': vm.card[0].properties[0].value,
'border': vm.card[0].properties[1].value,
'border-radius': vm.card[0].properties[2].value,
'box-shadow': vm.card[0].properties[3].value,
'margin': vm.card[0].properties[4].value,
'padding': vm.card[0].properties[5].value,
}">
<div class="card-body">
<h5 class="card-title">Card title</h5>
<p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
<a href="#" class="btn btn-primary">Go somewhere</a>
</div>
</div>
我需要一个好方法来做一个 ng-repeat
可以说在 ng-style
中拉动 name
并将其定义为 CSS 属性 和 value
作为值。
在你的控制器中定义一个样式器函数,然后从 ng-style 中调用它:
vm.styler=function(props){
var styles={};
props.forEach(css=>{
styles[css.name]=css.value
})
return styles;
}
在 ng 风格中:ng-style="vm.styler(vm.cardObj[0].properties)"