首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular Js ng-style条件求值px

Angular Js ng-style条件求值px
EN

Stack Overflow用户
提问于 2014-11-07 10:37:56
回答 2查看 1.1K关注 0票数 0

尝试根据高度设置元素的样式。(即,如果高度

语法是正确的,但是计算单位像素的高度属性是有问题的。

代码语言:javascript
复制
ng-class="{true:'panel panel-success', false:'panel panel-danger'}[documents.length > 0]"

效果很好,但是

代码语言:javascript
复制
ng-class="{true:'panel panel-success', false:'panel panel-danger'}[height < 200px]"

不工作

EN

回答 2

Stack Overflow用户

发布于 2014-11-07 11:58:52

因为200px不是数字,所以height < 200px不起作用。

你可以这样做

代码语言:javascript
复制
<div class="panel" ng-class="height < 200 ? 'panel-success' : 'panel-danger'">
    ...
</div>
票数 1
EN

Stack Overflow用户

发布于 2014-12-13 10:31:47

DOM操作:您需要的是一个指令!!

代码语言:javascript
复制
var elemstyle = angular.module('elemstyle', []);

elemstyle.controller('HeightBasedElCtrl', ['$scope', function($scope){ 

  $scope.data = {
    maxH : 200
  };

}]);


elemstyle.directive('heightBasedCss', [function(){
  return {
    transclude : true,
    template : '<div ng-class="{true : \'panel panel-success\', false: \'panel panel-danger\'} [ checkHeight() ]" ng-transclude><div>',
    link: function(scope, elem, attrs) {

        scope.checkHeight = function() {

            return elem[0].offsetHeight < scope.data.maxH; 
        };
    }  
  };
}]);

现在,您要做的就是使用以下指令:

代码语言:javascript
复制
<div height-based-css>
    <!-- 
        add whatever content you like here ... 
    -->
</div>

尝试使用jsfiddle:http://jsfiddle.net/jfabfab/cL3Lda69/

茉莉测试:http://jsfiddle.net/jfabfab/taakfhhs/

关于jsfiddle版本的注意:我在一个文本区域上使用了绑定,以实时查看样式变化+ jasmine上的TODO (测试元素offsetHeight变化)

希望能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26793131

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档