此时,我是AngularJS的新手。
这有效:
scope.$apply(
scope.$eval(attrs.ngEnter, {'event': event})
);
但动态调用该函数不起作用:
<input type="text" ng-model="value" ng-enter="hideToolTip()" />
HTML:
app.directive('ngEnter', function() {
return function(scope, element, attrs) {
console.log(scope.hideTooltip());
element.bind("keydown keypress", function(event) {
if(event.which === 13) {
console.log(attrs.ngEnter);
scope.$apply(
scope.$eval(attrs.ngEnter, {'event': event})
);
event.preventDefault();
}
});
};
});
enitre指令:
scope.$apply()
那么,如何在AngularJS指令中动态调用函数?
答案 0 :(得分:2)
好像你错过了HTML
中控制器方法的参数// you have missed the event parameter.
<input type="text" ng-model="value" ng-enter="hideToolTip(event)" />
app.directive('ngEnter', function() {
return function(scope, element, attrs) {
element.bind("keydown keypress", function(event) {
if (event.which === 13) {
console.log(attrs.ngEnter);
scope.$apply(
scope.$eval(attrs.ngEnter, {
'event': event
})
);
event.preventDefault();
}
});
};
});
控制器中的
$scope.hideToolTip = function(event) {
console.log(event);
}
这是DEMO
P.S。这将在点击 ENTER 后调用控制器功能两次,因为您绑定了keydown
和keypress
个事件。
并且不要忘记删除 console.log(scope.hideTooltip());
行。