javascript - AngularJS动态调用函数

标签 javascript angularjs

此时,我还是 AngularJS 的新手。

这有效:

scope.$apply(scope.hideTooltip());

但是动态调用该函数不起作用:

scope.$apply(
  scope.$eval(attrs.ngEnter, {'event': event})
);

HTML:

<input type="text" ng-model="value" ng-enter="hideToolTip()" />

整个指令:

   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();
                    }
                });
            };
        });

那么,如何在 AngularJS 指令中动态调用函数?

最佳答案

似乎您错过了 HTML 中 Controller 方法的参数

// 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();
        }
      });
    };
  });

在 Controller 中

 $scope.hideToolTip = function(event) {
    console.log(event);
  }

这是DEMO

附注由于您绑定(bind)了 keydownkeypress 事件,这将在按 ENTER 后调用 Controller 函数两次。

并且不要忘记删除 console.log(scope.hideTooltip()); 行。

关于javascript - AngularJS动态调用函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30978819/

相关文章:

javascript - 通过 JavaScript 或 jQuery 识别 select option change(change, onchange, click) 事件

javascript - Angular 服务不能作为单例工作

javascript - AngularJS ng-model 输入值

javascript - 推特 typeahead.js/Bloodhound (v 0.10.2) : How to update the (local) source dynamically

javascript - 我如何在 jquery 中使用 get 方法提交表单

Javascript - 排序后获取 'WILL BE' 关系的索引数组

javascript - 如何使用 Invisible reCaptcha 保护 jquery 按钮?

angularjs - Angular nsResource 为 REST 字符串数组创建一个 char 数组的数组

javascript - 如何在选择框或下拉中默认选择第一个选项

angularjs - Protractor :如何在注册新用户后期望浏览器 url 等于具有 id 的 url?