Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从AngularJS指令中获取和设置元素高度_Javascript_Jquery_Angularjs_Directive_Mobile Angular Ui - Fatal编程技术网

Javascript 如何从AngularJS指令中获取和设置元素高度

Javascript 如何从AngularJS指令中获取和设置元素高度,javascript,jquery,angularjs,directive,mobile-angular-ui,Javascript,Jquery,Angularjs,Directive,Mobile Angular Ui,守则的目的是: 获取我所在区域的高度 设置对象的高度 当前的.js代码是: app.directive('safety', function() { return { restrict: 'A', link: function(scope, element) { var section = element[0].offsetHeight; var padding = 60; var heading = 49

守则的目的是:

  • 获取我所在区域的高度
  • 设置对象的高度
  • 当前的.js代码是:

    app.directive('safety', function() {
      return {
          restrict: 'A',
          link: function(scope, element) {
    
              var section = element[0].offsetHeight;
              var padding = 60;
              var heading = 49;
              var button = 74;
              var margin = padding + heading + button;
    
              var newHeight = section - margin;
    
              console.log('Section: ' + section);
              console.log('New height: ' + newHeight);
          }
      };
    });
    
    我的HTML是:

    <section class="section container-fluid safety-container" safety>
        <h1 class="page-header">Procedures</h1>  
        <div class="row">
            <div class="impact-doc-link col-md-12"> 
                <a class="btn btn-safety btn-block" href="doc/procedures.pdf" role="button">Procedures</a>
            </div>
            <div class="impact-pdf-container col-md-12">
                <object data="doc/procedures.pdf" type="application/pdf" width="100%" height="100%">
                alt : <a href="doc/procedures.pdf">doc/procedures.pdf</a>
                </object>
            </div>
        </div>
    </section>
    
    
    程序
    中高音:
    
    如何从“安全”指令中将“.impact pdf container”的高度设置为newHeightVariable?我是个新手。我需要制定新的指令吗?或者我可以简单地附加指令以合并此功能


    另一件事是不用使用变量“padding”和“heading”,如何从指令中获取其他元素的高度?

    最佳实践要求永远不要在控制器内部进行DOM操作。这里有一篇关于它的文章:


    最佳实践要求永远不要让DOM操作从控制器内部发生。这里有一篇关于它的文章:


    您可以在指令中使用DOM方法。因为您使用的是jQuery,所以更加简单:

    app.directive('safety', function() {
      return {
          restrict: 'A',
          link: function(scope, element) {
    
              var section = element[0].offsetHeight;
              var padding = 60;
              var heading = 49;
              var button = 74;
              var margin = padding + heading + button;
    
              var newHeight = section - margin;
    
              element.find('.impact-pdf-container').height(newHeight);
          }
      };
    });
    
    以及如何读取元素的填充/边距。使用jQuery也很容易,所以您可以只使用以下方法:


    您可以在指令中使用DOM方法。因为您使用的是jQuery,所以更加简单:

    app.directive('safety', function() {
      return {
          restrict: 'A',
          link: function(scope, element) {
    
              var section = element[0].offsetHeight;
              var padding = 60;
              var heading = 49;
              var button = 74;
              var margin = padding + heading + button;
    
              var newHeight = section - margin;
    
              element.find('.impact-pdf-container').height(newHeight);
          }
      };
    });
    
    以及如何读取元素的填充/边距。使用jQuery也很容易,所以您可以只使用以下方法:


    您的解决方案返回了以下错误:TypeError:element.find(…)。height不是link上的函数。它似乎在查找元素时遇到问题。@Chris执行link时,还没有子元素。您应该尝试在$timeout中运行它。(您应该谨慎使用这些指令,这些指令会更改超时中的元素,因为如果有几个指令,这会减慢浏览器的速度,尤其是IE)此外,您还应该记住,高度和宽度等属性在exc link函数期间是未知的,以后可能会更改。您的解决方案会抛出此错误:TypeError:element.find(…).height不是link上的函数似乎在查找元素时遇到问题。@Chris link执行时,还没有子元素。您应该尝试在$timeout中运行它。(您应该谨慎使用这些指令,这些指令会更改超时中的元素,因为如果有几个指令会减慢浏览器的速度,尤其是IE)此外,您还应该记住,高度和宽度等属性在exc link函数期间是未知的,以后可能会更改。本文讨论的是AngularJS指令。因此,虽然这个答案是正确的,但它与这个问题无关。这个讨论是关于AngularJS指令的。因此,尽管答案是正确的,但与问题无关。