什么是基于另一个元素

时间:2017-05-06 13:01:46

标签: javascript jquery angularjs

$('#reply').css("padding-top", $('.post:visible').height()-35 + "px" );

我正在做的是将padding-top的CSS #reply值设置为.post的高度。

到目前为止,我能在AngularJS项目中使用它的唯一方法是:

$(function() {
  setTimeout(function () {
    $('#reply').css("padding-top", $('.post:visible').height()-35 + "px" )
  },300)
});

我如何以Angular的方式做到这一点,例如,这样的代码可能是某种angular.copy?或者我可以继续使用jQuery。如果是这样,当AngularJS完成时我怎么能解雇它,所以我不需要超时功能?

<div id="#reply" ng-style="{'padding-top' : code_that_returns_.post:visible's_height }">

1 个答案:

答案 0 :(得分:0)

这个问题很难问,但我决定随着时间的推移我会同时处理问题和答案。

目前这是我的解决方案(它解决了我的超时问题)。

<div id="#reply" ng-style="{'padding-top' : calcPostHeight() }">

$scope.calcPostHeight = function () {
  return $('.post:visible').height()-35 + "px";
};

编辑:

这个解决方案看起来更糟......但是使用了一个指令。

<div id="#reply" post-height="35">

.directive('postHeight', function($timeout){
  return {
    link: {
      post: function (scope, element, attr) {
        $timeout(function(){
          var result = document.getElementsByClassName("post")[0];
          element[0].style.paddingTop = result.style.width - attr.postHeight;
        }, 0)
      }
    }
  }
});