AngularJS(1.x)-如何刷新视图

AngularJS(1.x)-如何刷新视图,angularjs,Angularjs,我有以下情况。。。我必须在视口的一个区域内绘制一组矩形。这些矩形(div)的大小实际上是基于一些数据 控制器接触服务器,获取数据,并根据视口中分配给它的可用空间调整div的大小 大致: <div ng-init="main.init();"> <div ng-repeat="icon in main.icons" style="top: {{icon.top}}px; left: {{icon.left}}px;

我有以下情况。。。我必须在视口的一个区域内绘制一组矩形。这些矩形(div)的大小实际上是基于一些数据

控制器接触服务器,获取数据,并根据视口中分配给它的可用空间调整div的大小

大致:

<div ng-init="main.init();">   
   <div ng-repeat="icon in main.icons"
     style="top: {{icon.top}}px;
            left: {{icon.left}}px;
            width: {{icon.width}}px;
            height: {{icon.height}}px;"></div>
</div>

main.init()函数使用
angular.element()
调用进入DOM,获取可用空间的宽度和高度,并调用一个服务,该服务在给定区域内以最佳方式执行一些复杂的计算(基本上是一个布局算法来定位和调整矩形大小)

我唯一的问题是在屏幕上调整大小。如果用户调整屏幕大小,我的可用空间(定义为%)也会改变,我需要重新绘制这些矩形

我目前正在重新加载整个页面,重新调整窗口大小,但这显然不是我想要的

还有一件事。。。有很多数据点转换成矩形:10K-20K

如何在角度上正确地执行此操作,以便计算并重新绘制窗口大小。简单地更新控制器中的
main.icons
,似乎不会触发ng repeat重新绘制所有内容。不知道为什么


任何帮助都将不胜感激。

您可以使用
$window
服务,在高度和宽度上添加一块手表,然后检查是否应该更新div。您使用的是由角度填充的内联样式?戈达说这看起来和感觉都很不对。我会为这整件事找到另一个选择。@MihailStancescu我该怎么做?你能举个例子吗?@JoeLloyd,那就是?我不知道你到底想达到什么目的,但如果是图形化的,请使用画布和绘图库,比如paper.js或其他什么。您仍然可以使用js进行所有计算,但不能使用角度控制器修改dom。您可以使用
$window
服务,在高度和宽度上添加一块手表,然后检查是否应该更新div。您使用的是由角度控制器填充的内联样式?戈达说这看起来和感觉都很不对。我会为这整件事找到另一个选择。@MihailStancescu我该怎么做?你能举个例子吗?@JoeLloyd,那就是?我不知道你到底想达到什么目的,但如果是图形化的,请使用画布和绘图库,比如paper.js或其他什么。您仍然可以使用js进行所有计算,但不能使用角度控制器修改dom。