我想以字符串的形式将父范围上的事件名称(单击或触摸)设置为字符串。在子范围内,我想使用该字符串将事件与 element.on 绑定。
例子:
angular.module('directives', [])
.directive('Sidebar', function () {
'use strict';
return {
link: function (scope) {
//determines whether or not to use click or touch events
//I want to use this to bind events with
//element.on(scope.sidebarClickEvent) in child scopes
scope.sidebarClickEvent = 'click';
},
restrict: 'E',
templateUrl: 'sidebar.html'
};
})
.directive('collapseBtn', function() {
'use strict';
return function (scope, element) {
element.on(scope.sidebarClickEvent /* undefined */ , function () {
//scope.sidebarClickEvent is available here, when the event handler executes
scope.toggleSidebarCollapseState();
element.find('i').toggleClass('icon-double-angle-right');
});
};
})
问题是当我绑定事件时,在父作用域上定义的属性不可用,所以当我绑定事件时 scope.sidebarClickEvent 是未定义的。但是,如果我将其更改为常规单击事件,那么我可以在事件处理程序中获取该属性。
我可以在事件绑定发生时访问范围继承的属性吗?我什至不确定我是否在这里正确理解了范围继承,因此我也将不胜感激指出我理解中的错误。
谢谢。