如何调用$scope$apply()仅当它's还没有进行中
How do I call $scope.$apply() only if it's not already in progress
我正在AngularJS中构建一个应用程序。我的应用程序还使用了一个第三方javascript库,该库作用于如下div:
<div id="turn-me-into-a-slider"></div>
现在我实际上有几个这样的div,并使用ng重复来制作它们。所以它看起来更像这样:
<div id="sliders-container" ng-repeat="slider in sliders track by $index">
<div id="slider-{{$index}}"></div>
</div>
现在,在我的代码中,当我想首先添加滑块时,我会向sliders
数组添加一个新滑块。这应该传播到DOM中,然后我可以用id="slider-n"
为div上的滑块运行初始化函数。这就是问题的根源。如果我在sliders
数组上推送一个新值后立即放入滑块的初始化函数,DOM还没有更新,当调用滑块初始化器时,还没有具有正确id的DOM元素,初始化失败。如果我先调用$scope.$apply()
,就会解决问题,但偶尔我会得到error, $scope.$apply() already in progress
。有没有一种方法可以调用$scope$apply()是否仅在当前未运行时才能避免这种情况?如果你还有其他建议,我欢迎你。
试试这个:
setTimeout(function() {
$scope.$apply(/**your function*/);
}, 1000);
这里有更多的解释:为什么要使用if(!$scope.$$phase)$scope$应用()反模式?
相关文章:
- 在解析对象.save()中;没有返回任何原因
- 我可以让我的Ajax调用引起一个“;进行中”;光标
- 如何在php中读取没有任何键的JSON数组
- Angular Apply已经在进行中
- firebase中有没有一种方法可以防止快速连续写入
- 关于使用.className的建议,目前还没有;我不能在我的圈子里工作
- 如何在windows 8 html5现代用户界面中显示没有背景的图像
- 从易趣搜索中删除没有指定运费的物品
- 在Javascript中设置没有__proto__的函数的原型
- 如何避免$digest正在进行中的错误
- 向按钮发送点击事件时,$apply已在进行中
- 如何调用$scope$apply()仅当它's还没有进行中
- 如何在 jQuery 中重新触发音频,当它还没有完成
- $scope.$watch 没有调用,但$digest已经在进行中
- Backbone.js DOM还没有准备好在渲染方法中应用jquery的魔力
- $apply已经在进行中,没有在任何地方使用$apply
- 在AngularJS的link()函数中DOM元素还没有准备好
- AngularJS $scope没有更新,而是返回'摘要已经在进行中'
- Ember js:在我的例子中,为什么路由器中的逻辑会继续,即使其中使用的功能还没有完成
- 有没有办法检查回发是否正在进行中