gpt4 book ai didi

angularjs - 我可以用 AngularJS 简化点击回车键吗?

转载 作者:行者123 更新时间:2023-12-04 14:26:18 25 4
gpt4 key购买 nike

我已经有了我想出的这段代码:

在我的外部 Controller 中:

    $scope.key = function ($event) {
$scope.$broadcast('key', $event.keyCode)
}

在我的内部 Controller 中(我有不止一个这样的)
    $scope.$on('key', function (e, key) {
if (key == 13) {
if (ts.test.current) {
var btn = null;
if (ts.test.userTestId) {
btn = document.getElementById('viewQuestions');
} else {
btn = document.getElementById('acquireTest');
}
$timeout(function () {
btn.focus();
btn.click();
window.setTimeout(function () {
btn.blur();
}, 500);
})
}
}
});

有没有另一种方法可以使用 AngularJS 的一些我没有包含在这里的特性来简化它?

最佳答案

请检查这个要点,https://gist.github.com/EpokK/5884263

你可以简单地创建一个指令 ng-enter并将您的操作作为参数传递

app.directive('ngEnter', function() {
return function(scope, element, attrs) {
element.bind("keydown keypress", function(event) {
if(event.which === 13) {
scope.$apply(function(){
scope.$eval(attrs.ngEnter);
});
event.preventDefault();
}
});
};
});

HTML
<input ng-enter="myControllerFunction()" />

您可以更改名称 ng-enter到不同的东西,因为 ng-**是 Angular 核心团队保留的。

我还看到您的 Controller 正在处理 DOM,而您不应该这样做。将这些逻辑移至其他指令或 HTML,并保持您的 Controller 精简。
if (ts.test.userTestId) {
btn = document.getElementById('viewQuestions'); //NOT in controller
} else {
btn = document.getElementById('acquireTest'); //NOT in controller
}
$timeout(function () {
btn.focus(); //NOT in controller
btn.click(); //NOT in controller
window.setTimeout(function () { // $timeout in $timeout, questionable
btn.blur(); //NOT in controller
}, 500);
})

关于angularjs - 我可以用 AngularJS 简化点击回车键吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31563325/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com