Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS动态调用函数_Javascript_Angularjs - Fatal编程技术网

Javascript AngularJS动态调用函数

Javascript AngularJS动态调用函数,javascript,angularjs,Javascript,Angularjs,在这一点上,我对AngularJS是新手 这项工作: scope.$apply(scope.hideTooltip()); 但动态调用函数不起作用: scope.$apply( scope.$eval(attrs.ngEnter, {'event': event}) ); HTML: 那么,如何在AngularJS指令中动态调用函数呢?似乎您错过了HTML中控制器方法的参数 // you have missed the event parameter. <input type="

在这一点上,我对AngularJS是新手

这项工作:

scope.$apply(scope.hideTooltip());
但动态调用函数不起作用:

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


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

似乎您错过了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();
        }
      });
    };
  });
这是你的电话号码

另外,由于绑定了
keydown
keypress
事件,这将在点击ENTER键后调用控制器函数两次


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

我认为你想做的事情可以通过隔离范围来完成:如果你使用的是angular 1.3,你可以使用
ng模型选项。谢谢是的,我正在传递事件参数,但控制器函数没有任何参数。奇怪的是,它没有触发一个未定义的方法异常。:)很高兴为您提供帮助,另外,如果您想调用
console.log(scope.hideTooltip())这里必须使用的方法是
console.log(scope.hideToolTip),cheerz:)
   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();
                    }
                });
            };
        });
// 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);
  }