如何创建一个全局可用的回调API,它使用$ scope?

时间:2014-12-28 06:57:27

标签: javascript angularjs callback

我希望我的主模块提供一个api,允许任何指令,控制器,工厂等在用户调整div时调用要调用的函数。

现在我通过使用jQuery的resizable回调来更新范围内的x和y变量,然后调用$apply(),从而成功地完成了这项工作。您可以想象,问题在于当用户拖动div时,它会非常快速地调用resize回调。由于性能原因,快速调用$ apply()并不理想。

我考虑过使用服务/工厂,但是有一个不确定数量的可调整大小的div /指令,我不确定单身是否有意义。

有没有办法可以创建一个不使用$ scope的“非正式”API,不会触发摘要周期,也不会使用其他库?也许有一种方法使用控制器和require: ^myCtrl?我是否需要将所有已注册的回调函数存储在数组中?

1 个答案:

答案 0 :(得分:0)

你正在做的事情听起来相当讨厌,所以你发布可以听取范围的angularjs事件可能不是一个很大的飞跃。所以要注册'您在自己创建的某个自定义事件的范围上侦听的函数,在回调中执行您想要的任何操作。让你的jquery在$ rootScope上播放这个事件。

阅读有关angularjs事件的内容 Working with $scope.$emit and $scope.$on