Angularjs 如何在Ionic中获得div的高度

Angularjs 如何在Ionic中获得div的高度,angularjs,ionic-framework,Angularjs,Ionic Framework,我正在使用Ionic开发一个移动应用程序 首先介绍一下我想要实现的目标。 我正在编写一个具有挑战性的设计。我将固定高度的图像放置在具有灵活高度的div的右下角。然后,div中的文本需要环绕图像 像这样: 事物的HTML和CSS方面 我已经使用了CSS和HTML(至少我认为是这样!)。HTML是: //this line is in the head <style ng-bind-html="myStyles"></style> //the re

我正在使用Ionic开发一个移动应用程序

首先介绍一下我想要实现的目标。

我正在编写一个具有挑战性的设计。我将固定高度的图像放置在具有灵活高度的div的右下角。然后,div中的文本需要环绕图像

像这样:

事物的HTML和CSS方面

我已经使用了CSS和HTML(至少我认为是这样!)。HTML是:

    //this line is in the head
    <style ng-bind-html="myStyles"></style>

    //the rest is in the body of the HTML 
    <div class="score_block">
        <div class="description">
            <div class="image_container">
                <img src="img/emotional_man.png">  
            </div>            
            <p>{{area.levelling.description}}</p>
            <div class="habits_button">
                <button ng-click="$state.go('app.planner')" class="button button-stable button-icon button-block">Plan habits</button>
            </div>
        </div>
    </div>  
如果我更改“score_block:before”类的高度,我可以根据需要重新定位图像

到目前为止的Javascript

因此,在Javascript方面,我希望如果我能够计算出.description div的高度,我可以从中减去图像的高度,并告诉CSS如何定位图像。我需要一些AngularJ来做这件事——我想这就是我需要的,因为据我所知,JQuery在Ionic中不起作用

到目前为止,我有JS代码可以做到这一点:

.controller('emotionalCtrl', function ($scope, $state, AreasService, _) {
    //these commented out lines are to show things I have tried but don't work
    //var blockH = $(".description").height();
    //var descriptionHeight = angular.element('description');
    //var number = descriptionHeight('offsetHeight');

    var number = 0;
    $scope.myStyles = "#habit_area_homepage .score_block:before { height:" + number + "px; }";
    })
我想计算一下这个变量,然后把它传回去。我可以手动更改number的值,因为它工作正常,所以我知道其他一切都很好。我读过一些关于做指令等的东西,但我看到的所有例子都让我困惑。也许我需要在这里放一个指令或其他东西来帮助我获得.description元素的高度,但我就是不知道怎么做。我花了将近两天的时间才走到这一步


我是AngularJS和Ionic的新手,因此非常感谢您的帮助。谢谢

实现动态样式有多种方法

根据您提供的代码。我建议您在头部添加样式

在控制器中运行以下代码或“运行”:

  • 使用QuerySelector,将返回第一个也是唯一一个元素:

    var element = document.querySelector(".description");
    console.log(element.offsetHeight);
    
  • 使用指令也是一种好方法,请检查:


    实现动态样式有多种方法

    根据您提供的代码。我建议您在头部添加样式

    在控制器中运行以下代码或“运行”:

  • 使用QuerySelector,将返回第一个也是唯一一个元素:

    var element = document.querySelector(".description");
    console.log(element.offsetHeight);
    
  • 使用指令也是一种好方法,请检查:


    谢谢你的评论,但这对我的问题没有帮助。我已经有了所有的代码来动态地改变样式——我知道如何让它工作。我想要帮助的是如何使用angularjs获得div的高度。非常感谢。第一个选项适用于我,只要我记得将$window注入控制器!谢谢你的评论,但这对我的问题没有帮助。我已经有了所有的代码来动态地改变样式——我知道如何让它工作。我想要帮助的是如何使用angularjs获得div的高度。非常感谢。第一个选项适用于我,只要我记得将$window注入控制器!
    var element = document.getElementById("id");
    console.log(element.offsetHeight);
    
    var element = document.querySelector(".description");
    console.log(element.offsetHeight);