我有这样的指令,可以转到模态窗口中的下一个输入(或按钮):
.directive('autoVrm', function () {
return function (scope, element, attrs) {
var counter = 0;
element.bind("keydown keypress", function (event) {
console.log(element);
if(event.which === 13) {
counter++;
event.preventDefault();
var elementToFocus = element.find('input')[counter] || element.find('button')[1];
console.log(elementToFocus.type);
if(angular.isDefined(elementToFocus))
elementToFocus.focus();
if (elementToFocus.type === 'button'){
counter = -1;
elementToFocus.bind("keydown keypress", function (eventSubmit) {
if(eventSubmit.which === 13) {
console.log('submit');
}
});
}
}
});
};
但是我有一个麻烦,如果我在按钮上,然后单击输入,我会得到:
Uncaught TypeError: undefined is not a function
但为什么?如何使输入单击提交表单?不依赖控制器?
尝试为未捕获的TypeError尝试angular.element(elementToFocus).bind。
关于您的新评论:
如果这在您的控制器中定义
$scope.registerUser = function() {
...
}
然后只需在指令中调用它即可
elementToFocus.bind("keydown keypress", function (eventSubmit) {
if(eventSubmit.which === 13) {
scope.registerUser();
}
});
猜测一下,您可以执行类似检查attrs参数的操作,以获取'data-ng-click'的值,然后调用适当的函数:
elementToFocus.bind("keydown keypress", function (eventSubmit) {
if(eventSubmit.which === 13) {
if (attrs.dataNgClick == "registerUser()" {
scope.registerUser();
}
else if (attrs.dataNgClick == "sign()" {
scope.sign();
}
else if (attrs.dataNgClick == "frgtPassword()" {
scope.frgtPassword();
}
}
});
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句