从控制器angularjs设置css样式

Ray*_*zer 14 angularjs

我已经在这30分钟了,无法弄清楚我做错了什么......

HTML:

<div ng-controller="main">
    <div ng-style="mapheight">
        <google-map center="center" zoom="zoom" style="height: inherit;"></google-map>
        </div>
</div>
Run Code Online (Sandbox Code Playgroud)

控制器:

angular.module('csApp.controllers', ["google-maps"]).
    controller("main", function($scope) {
        $scope.mapheight = "{'min-height':" + getHeight() + "px;}";
        $scope.center = {
            latitude: 45,
            longitude: -73
        };
        $scope.zoom = 8;

        function getHeight() {
            return (window.innerHeight * .70);
        }
    })
Run Code Online (Sandbox Code Playgroud)

根本没有样式应用于我的div.

当我将{{mapheight}}放在我的模板中时,我可以通过变量传递它但是我必须将它传递给style属性,这显然不是我应该怎么做的.

我在这做错了什么?这是我有角度的第一天,我几乎流泪,因为我甚至无法调整div的大小.

谢谢!

这是我的控制器的变化:

  $scope.mapHeight = { 'min-height': getHeight() };
Run Code Online (Sandbox Code Playgroud)

And*_*ger 32

ng-style采用对象绑定,因此$scope.mapheight应该是对象而不是字符串.即

$scope.mapheight = {
    'min-height': getHeight() + "px"
};
Run Code Online (Sandbox Code Playgroud)

该ng-style属性采用表达式,因此将字符串版本直接放在HTML中

ng-style="{'min-height': '40px'}"
Run Code Online (Sandbox Code Playgroud)

将会工作,因为它将被评估,并将创建一个对象.设置ng-style="mapheight"被评估为取值mapheightfrom,$scope因此$scope.mapheight需要成为一个对象.

  • 不客气,不用担心.一旦你全神贯注,它就是一个很好的框架. (8认同)
  • 非常感谢!从能够在几个小时内整合网络应用程序到无法调整div的大小是非常令人难以置信的!谢谢.我将发布工作代码! (3认同)