ng-style 作为变量传递给指令

Posted

技术标签:

【中文标题】ng-style 作为变量传递给指令【英文标题】:ng-style as a variable passed to directive 【发布时间】:2016-07-05 18:38:30 【问题描述】:

我知道大多数人都这样使用样式:

ng-style="'background-color': someVariable"
// or as a variable
ng-style="stage.style"  

我想要一个我刚刚计算的范围变量:

// controller
$scope.stage.style = stageFactory.init(); // returns Object width: 1155, height: 1304

我真正想做的是将它传递给指令:

app.directive( 'stage', function( $window )
  return 
    restrict: 'E',
    transclude: true,
    scope: 
      mystyle: '='
    ,
    template: '<div ng-style="mystyle" ng-transclude></div>',
    link: function( scope, attr )
      if( ! scope.mystyle.width )
        scope.mystyle.width = $window.innerWidth;
      
      if( ! scope.mystyle.height )
        scope.mystyle.height = $window.innerHeight;
      

      // scope.mystyle = 
      //   width: scope.width,
      //   height: scope.height 
      // ;

      console.log( 'style in directive', scope.mystyle );
    
  ;
);

我没有看到正在编译的样式,如何让样式显示?

到目前为止我的(中)完整代码: https://plnkr.co/edit/5wwKJ445IqPGTNGGRDIv?p=preview

【问题讨论】:

【参考方案1】:

除了答案:

 // in directive
      if( !isNaN( scope.mystyle.width ) )
        scope.mystyle.width += 'px';
      
      if( !isNaN( scope.mystyle.height ) )
        scope.mystyle.height += 'px';
      

【讨论】:

【参考方案2】:

我只能说widthheight 值应该附加px,否则它们将被视为无效CSS

$scope.stage.style = width: '1155px', height: '1304px'

【讨论】:

@SoluableNonagon 很高兴知道这一点.. 谢谢 :-)

以上是关于ng-style 作为变量传递给指令的主要内容,如果未能解决你的问题,请参考以下文章

语法错误:将变量传递给指令时,令牌“:”是一个意外的令牌

如何在 ng-style 指令中根据多个条件应用多种样式?

如何将 PHP 变量传递给 Vue 指令

将JSON对象作为属性传递给指令

如何强制 ng-style 添加到现有样式?

我可以在 Angular ng-style 指令中使用来自 API 调用的数据吗?