ng-style不更新宽度和高度

时间:2015-05-22 08:30:01

标签: javascript angularjs css3

我正在尝试创建一些自动调整大小的圈子。问题是ng-style属性没有更新样式。 http://plnkr.co/edit/3HxSzWIyUsLUW6UwFlRR见plunker

Javascript:

$scope.sellingPoints = {
    '1':{ 'text':'Newest Technologies'},
    '2':{ 'text':'Rapid Development'},
    '3':{ 'text':'Scaleable Solutions'},
    '4':{ 'text':'Custom CMS'}  
};

$scope.kpi = {};
$scope.sizes = {};
$scope.onResize = function() {
    console.log('joe');
    var kpifit = document.getElementById('fit');
    $scope.sizes.width = kpifit.offsetWidth - 30;
    $scope.kpi.width = $scope.sizes.width + 'px';
    $scope.kpi.height = $scope.sizes.width + 'px';  
    console.log($scope.sizes.width);
} 

angular.element($window).bind('resize', function() {
    $scope.onResize();
})
$timeout(function() {
    $scope.onResize();
}, 300);

html:

<div class="row no-margin">
    <div class="col-md-3 col-xs-6" id="fit" ng-repeat="item in sellingPoints">
        <div class="kpi" ng-style="{'width':kpi.width,'height':kpi.height}">
            <div class="kpi-text">{{item.text}}</div>
        </div>
    </div>
</div>

2 个答案:

答案 0 :(得分:6)

使用angular.element.prototype.bind(和on)方法绑定的处理程序本身不会触发摘要。所以你需要手动完成:

angular.element($window).bind('resize', function() {
    $scope.onResize();
    $scope.$apply();
});

演示: http://plnkr.co/edit/dPphd7KkQC7jNqleEgHb?p=info

答案 1 :(得分:0)

如果您想使用函数

ng-style中使用宽度值

以下示例用于进度条形图。

$scope.ChartDataList = [{
        Ch_Name: 'Document',
        Ch_Percentage: '40%',
        getMaxLength() {
            return '40%';
        }
    }, {
        Ch_Name: 'Video/Audio',
        Ch_Percentage: '66%',
        getMaxLength() {
            return '66%';
        }
    }
}]