使用setTimeout()angularjs可以缓慢更新UI

UI updates slowly with setTimeout() angularjs

本文关键字:缓慢 更新 UI angularjs setTimeout 使用      更新时间:2023-09-26

我正在使用Angularjs并尝试更新我的ui。目前,我正在使用这些方法快速更新ui,但在用新数据更新控制器后,在ui更改之前,我会有2秒的延迟。

 $scope.sub("panel.service.updateData", updateEventData.bind(this));    
    function updateEventData(ngEvent, data) { 
                var errorMessage = "updateEventData() ";
                        this.timeout(():void=> {
                            this.scope.list.myList = [];
                            this.scope.list.myList = data.data;
                        });
                        console.log(errorMessage+data.type);
                        console.log(this.scope.list.myList);          
            }

我也试过:

  • safeApply()方法将我的控制器中的更改包装为嗯
  • 将我的数据包装到另一个对象"列表"中
  • 使用$watch()更新控制器
  • 用sub/pub更新控制器

我目前正在使用sub/pub机制在控制器和服务之间传递数据。

我在控制器中的调用后立即设置了console.log(),以显示何时用新数据更新,控制器更新得很快,但我的ui在大约2秒钟后不会得到更改。

有什么想法吗?

是的,您可以通过调用controller.$apply()来强制Angular"立即"重新绘制。在你的代码中,我相信它会是:

this.timeout(():void=> {
    this.scope.list.myList = [];
    this.scope.list.myList = data.data;
    this.scope.$apply();
});