代码之家  ›  专栏  ›  技术社区  ›  Shrish Shrivastava

我们可以为单个元素使用ng样式的多个对象吗?

  •  2
  • Shrish Shrivastava  · 技术社区  · 8 年前

    在控制器中,我们有两个ng样式的对象。

    $scope.rightpadding = {
        paddingRight : '11px'
    }
    
    
    
     $scope.toppadding = {
        paddingTop : '7px'
    }
    

    我们想在ng风格中使用这两个,类似这样的东西

    不工作。

    不可能是这样的

    $scope。样式={ paddingRight:“11px”, paddingTop:“7px” } 我们如何才能做到这一点?

    2 回复  |  直到 8 年前
        1
  •  2
  •   RiesvGeffen    8 年前

    您可以创建一个方法,该方法将通过组合多个方法的结果来创建对象&将其设置为 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;
    }
    
        2
  •  1
  •   Shrish Shrivastava    8 年前

    使用角度。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])">