在 Angular 指令中的事件处理程序中调用范围函数
Calling scope function in event handler in Angular directive
>我的指令的链接函数中有以下代码:
link: function (scope, element)
{
angular.element($window).bind('resize', scope.layout);
// angular.element($window).bind('resize', function()
// {
// scope.layout();
// });
scope.onImgLoad = function(e) {
scope.ih=e.target.naturalHeight;
scope.iw=e.target.naturalWidth;
//scope.layout();
};
scope.layout = function() {
// do some style stuff based on image and window size
}
}
当窗口大小调整发生时,我得到一个未定义的错误不是函数(scope.layout)我也尝试了注释的代码段,但我得到了同样的错误。如何在调整大小事件处理程序中调用链接范围内的函数?
更新
resize 事件正在父指令中查找布局函数。我通过给我的指令隔离范围来解决它。
scope.layout
函数在事件上进行绑定时未定义resize
。
尝试将绑定放在函数定义之后。
scope.layout = function() {
// do some style stuff based on image and window size
}
angular.element($window).bind('resize', scope.layout);
这里有一个 plunkr 解蒙(回调只执行一次): http://plnkr.co/edit/gUeKSYuUGEv9MT8idROg?p=preview
无论如何,如果不需要回调作为scope
方法,您可以将其定义为:
function layout() { ... }
它将在执行的任何点可用。
相关文章:
- 日志:未捕获的范围错误:超过了最大调用堆栈大小
- 未捕获的范围错误:setTimeout()超过了最大调用堆栈大小
- JavaScript继承:未捕获的范围错误:超过了最大调用堆栈大小
- 收到“范围错误: 超出最大调用堆栈大小”错误
- 为什么我从 JSLint 获得从事件调用的函数的“超出范围”
- 在 JavaScript 中捕获调用方的范围
- 递归承诺调用 - 内存范围变量问题
- 是否可以对超出范围的 setInterval 变量调用 clearInterval 方法
- 如何更改对 javascript 属性的调用的范围/上下文
- 从全局范围调用 jQuery 中的函数
- 从脚本标记的全局范围调用webpack模块中的函数
- Angular.js的多个rest调用范围问题
- 在指令外部调用范围变量
- 如何从 ui-grid 中显示的按钮调用范围方法 - 在 Angular js 中
- 使用字符串作为函数调用范围
- 有没有办法在函数中重新分配参数,并让它也影响调用范围
- 在 Angular 指令中的事件处理程序中调用范围函数
- 如何从 ngGrid 中显示的按钮调用范围方法
- 从指令生成的html中调用范围内的函数
- Javascript函数调用范围