你好我在角度js中使用这个指令来跟踪一个回车键
angular.module('botApp').directive('myEnter', function () {
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
if(event.which === 13) {
scope.$apply(function (){
scope.$eval(attrs.myEnter);
});
event.preventDefault();
}
});
};
});
但是当我在输入元素上尝试这个时(在ng-repeat内部)
<input id="inp-test_text" class="default-input inp-loading" type="text"
name="test_text" ng-model="app.test_text"
my-enter="inputEnter(this)">
在js中我有:
$scope.inputEnter = function(currentInput) {
console.log(currentInput);
}
我得到了这个答案:
所以除了当前的输入信息外,我还是得到了。那我如何得到我按下的元素? ($ event,$ element不起参数作用)
答案 0 :(得分:1)
在Angular expressions中,标识符this
访问上下文对象,在$eval
的情况下,该对象是scope
对象。
要提供本地element
,请将其添加为本地:
app.directive('myEnter', function () {
return function (scope, element, attrs) {
element.bind("keydown keypress", function (event) {
if(event.which === 13) {
scope.$apply(function (){
̶s̶c̶o̶p̶e̶.̶$̶e̶v̶a̶l̶(̶a̶t̶t̶r̶s̶.̶m̶y̶E̶n̶t̶e̶r̶)̶;̶
scope.$eval(attrs.myEnter, {$element: element});
});
event.preventDefault();
}
});
};
});
然后它将作为本地提供:
<input id="inp-test_text" class="default-input inp-loading" type="text"
name="test_text" ng-model="app.test_text"
̶m̶y̶-̶e̶n̶t̶e̶r̶=̶"̶i̶n̶p̶u̶t̶E̶n̶t̶e̶r̶(̶t̶h̶i̶s̶)̶"̶
my-enter="inputEnter($element)">
有关详细信息,请参阅