Angular:将指令从指令传递给事件/表达式

时间:2015-05-09 00:18:16

标签: javascript angularjs

我有一个指令,当按下enter键时,会触发一个事件或表达式。我想将元素值传递给我的尝试所见的事件或表达式:{ 'myArg': element.val() }

该指令有效,我的事件被调用,但参数未定义。

我缺少什么或需要修复什么?

app.directive('schdKeyenter', function () {
  return function (scope, element, attrs) {
    element.bind("keydown keypress", function (event) {
        if (event.which === 13) {

            scope.$apply(function () {
                scope.$eval(attrs.schdKeyenter, { 'someArg': element.val() });
            });

            event.preventDefault();
        }
    });
  };
});

用法:

<input type="text" schd-keyenter="onEnterPressed(someArg)">

当调用onEnterPressed()时,someArg未定义。

1 个答案:

答案 0 :(得分:0)

经过几天的观察,我终于找到了一个清理道路的例子。我不知道$ parse,这使得一切成为可能。可能有另一种方法可以做到这一点,但现在这是我的解决方案。

app.directive('schdKeyenter', ['$parse', function ($parse) {

  return function (scope, element, attr) {

    element.bind("keydown keypress", function (event) {
        if (event.which === 13) {

            var attrHandler = $parse(attr['schdKeyenter'])

            scope.$apply(function () {
                attrHandler(scope, { $event: event, $value: element.val() });
            });

            event.preventDefault();
        }
    });
  }
}]);

用法:

<input type="text" schd-keyenter="onEnterPressed($event, $value)">

我构建此示例的示例是:https://stackoverflow.com/a/26591042/3701159