2015-05-09 51 views
1

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

指令工作并调用了我的事件,但参数未定义。

我缺少什么或需要解决什么问题?

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是未定义的。

回答

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

相关问题