用setTimeout()angularjs

时间:2015-12-11 22:34:20

标签: javascript angularjs user-interface controller

我正在使用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()方法将我的控制器中的更改包装为 好。
  • 将我的数据包装在另一个对象' list'
  • 使用$ watch()
  • 更新控制器
  • 使用sub / pub
  • 更新控制器

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

我在控制器中调用之后立即设置了console.log()以显示何时使用新数据更新,控制器快速更新,但我的ui在之后大约2秒钟内没有得到更改。 / p>

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

是的,您可以强制Angular重绘"现在"致电controller.$apply()。在你的代码中我相信它会是:

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