我正在使用一个自定义指令来检测用户何时按Enter键,然后调用周围表单元素的ngSubmit 中调用的相同函数。
下面是我的问题的演示,我需要从控制器内访问该事件,但它总是未定义的。
以前有人有这个问题吗?有什么问题?为什么会这样? refs的链接和解释一样好。
是否有更好的方法可以重复两次方法调用? (次级)
var app = angular.module('app', []);
app.controller('submitCtrl', ['$scope', function($scope) {
$scope.submitContent = function(event) {
//This is what I am looking for.
console.log(event); //This is undefined.
}
}]);
app.directive('mvEnter', function() {
return function(scope, element, attrs) {
element.bind('keydown keypress', function(event) {
if (event.which === 13) {
scope.$apply(function() {
scope.$eval(attrs.mvEnter);
});
event.preventDefault();
}
});
};
});

<!DOCTYPE html>
<html>
<head></head>
<body ng-app='app'>
<div ng-controller="submitCtrl">
<textarea mv-enter="submitContent($event);"></textarea>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
</body>
</html>
&#13;
答案 0 :(得分:2)
答案 1 :(得分:2)
我改变了一些你的代码片段。看看,告诉我们这是否适合您! :)
说明:$ scope.eval,作为函数的名称,计算您传递的表达式。如果表达式是函数的原型,则该方法将返回您评估的函数,以便您可以执行它。所以,你有执行的功能和你想要的参数,所以... 1 + 1 = 2 jajajajaja。
我希望这有助于你。如果您有任何疑问,请询问:)
var app = angular.module('app', []);
app.controller('submitCtrl', ['$scope', function($scope) {
$scope.submitContent = function(event) {
//This is what I am looking for.
console.log(event); //This is undefined.
}
}]);
app.directive('mvEnter', function() {
return function(scope, element, attrs) {
element.bind('keydown keypress', function(event) {
if (event.which === 13) {
scope.$apply(function() {
var directiveFunction = scope.$eval(attrs.mvEnter);
if (angular.isFunction(directiveFunction)) {
directiveFunction(event);
}
});
event.preventDefault();
}
});
};
});
<!DOCTYPE html>
<html>
<head></head>
<body ng-app='app'>
<div ng-controller="submitCtrl">
<textarea mv-enter="submitContent"></textarea>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
</body>
</html>