我们可以在 ng-style 中为单个元素使用多个对象吗?
Can we use more than one objects in ng-style for a single element?
在控制器中我们有两个 ng 风格的对象。
$scope.rightpadding = {
paddingRight : '11px'
}
$scope.toppadding = {
paddingTop : '7px'
}
我们想在 ng-style 中同时使用这两个,像这样
不工作。
不可能像
$scope.style = {
paddingRight : '11px',
paddingTop : '7px'
}
我们怎样才能做到这一点?
您可以创建一个方法,该方法将通过组合多个方法的结果来创建一个对象,并将其设置为 ng-style
对象。
另外 paddingRight
应该是 padding-right
& paddingTop
应该是 padding-top
HTML
ng-style="setStyle()"
代码
$scope.rightpadding = function() {
return {
'padding-right': '11px'
};
}
$scope.toppadding = function() {
return {
'padding-top': '7px'
};
}
$scope.setStyle = function() {
var object = {};
angular.extend(object, $scope.rightpadding())
angular.extend(object, $scope.toppadding())
return object;
}
使用 angular.extend 很好,也很有效。但如果我们不想使用它,那么这里有另一种方式
在范围内创建一个通用方法
$scope.margeStyleObj = function(objectList) {
var obj = {};
objectList.forEach(function(x) {
for (var i in x)
obj[i] = x[i];
});
return obj;
}
然后从html
调用
<h5 ng-style="margeStyleObj([toppadding,rightpadding])">
在控制器中我们有两个 ng 风格的对象。
$scope.rightpadding = {
paddingRight : '11px'
}
$scope.toppadding = {
paddingTop : '7px'
}
我们想在 ng-style 中同时使用这两个,像这样
不工作。
不可能像
$scope.style = { paddingRight : '11px', paddingTop : '7px' } 我们怎样才能做到这一点?
您可以创建一个方法,该方法将通过组合多个方法的结果来创建一个对象,并将其设置为 ng-style
对象。
另外 paddingRight
应该是 padding-right
& paddingTop
应该是 padding-top
HTML
ng-style="setStyle()"
代码
$scope.rightpadding = function() {
return {
'padding-right': '11px'
};
}
$scope.toppadding = function() {
return {
'padding-top': '7px'
};
}
$scope.setStyle = function() {
var object = {};
angular.extend(object, $scope.rightpadding())
angular.extend(object, $scope.toppadding())
return object;
}
使用 angular.extend 很好,也很有效。但如果我们不想使用它,那么这里有另一种方式
在范围内创建一个通用方法
$scope.margeStyleObj = function(objectList) {
var obj = {};
objectList.forEach(function(x) {
for (var i in x)
obj[i] = x[i];
});
return obj;
}
然后从html
调用<h5 ng-style="margeStyleObj([toppadding,rightpadding])">