我在我的指令的链接功能中有以下代码:
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
}
}
当窗口调整大小时发生错误 undefined不是函数(scope.layout) 我也尝试了评论的代码,但我得到了同样的错误。如何在resize事件处理程序中调用链接范围内的函数?
更新
resize事件正在父指令中寻找布局函数。我通过给出我的指令隔离范围来解决它。
答案 0 :(得分:0)
在scope.layout
事件上进行绑定时,未定义resize
函数。
尝试在函数定义之后放置绑定。
scope.layout = function() {
// do some style stuff based on image and window size
}
angular.element($window).bind('resize', scope.layout);
这里有一个plunkr demontration(回调只执行一次):http://plnkr.co/edit/gUeKSYuUGEv9MT8idROg?p=preview
无论如何,如果不需要回调作为scope
方法,您可以将其定义为:
function layout() { ... }
并且可以在任何执行点上使用。