从控制器angularjs设置css样式

时间:2013-10-15 00:53:43

标签: angularjs

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

HTML:

<div ng-controller="main">
    <div ng-style="mapheight">
        <google-map center="center" zoom="zoom" style="height: inherit;"></google-map>
        </div>
</div>

控制器:

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);
        }
    })

根本没有任何风格适用于我的div。

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

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

谢谢!

这是我的控制器的变化:

  $scope.mapHeight = { 'min-height': getHeight() };

1 个答案:

答案 0 :(得分:32)

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

$scope.mapheight = {
    'min-height': getHeight() + "px"
};

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

ng-style="{'min-height': '40px'}"

会起作用,因为它会被评估并创建一个对象。设置ng-style="mapheight"的评估方式是从mapheight获取$scope的值,因此$scope.mapheight需要成为对象。