【发布时间】:2018-11-23 17:14:03
【问题描述】:
首先,我知道有很多类似的问题,但我发现没有一个支持使用事件侦听器执行任意方法。
我有这个指令,它执行窗口调整大小时传递的函数。
app.directive('onResize', function() {
var directive = {
'link': function(scope, element, attrs) {
var onResizeHandler = scope.$eval(attrs.onResize);
angular.element(window).on('resize', onResizeHandler);
angular.element(window).on('$destory', function() {element.off();});
}
};
return directive;
});
我可以用
触发上述指令<div data-on-resize="stickyHeader">...</div>
在我的控制器内部运行我的方法。
app.controller('myController', [$scope, function($scope) {
$scope.stickyHeader = function() {
console.log('event triggered')
};
}]);
以上所有代码都可以正常工作,但我需要像data-on-resize="stickyHeader(arg1, arg2)" 一样将一些参数传递给stickyHeader。当我尝试这样做时,我会在控制台中得到Cannot read property 'call' of undefined at ng (angular.js:3795)。不确定我可以做些什么来使我的指令支持带有参数的任意方法。
【问题讨论】:
-
建议的重复项都不适用,因为创建具有隔离范围或插值的事件处理程序指令是不明智的。
标签: angularjs