gpt4 book ai didi

angularjs - Angular js 输入框输入和暂停

转载 作者:行者123 更新时间:2023-12-04 21:08:53 25 4
gpt4 key购买 nike

我是 angular js 的新手,并且在 angular js 中使用 xmpp 服务,我有一种情况,我需要在用户开始在输入框中输入时发送输入,并在用户停止输入时暂停。

我有一个基本的想法,我需要使用 $timeout,并且有一个像 vm.isTyping = false; 这样的变量

我也为此编写了某种平台。

vm.isTyping = false;
vm.checkTyping = function(){
$timeout(function() {
vm.isTyping = true;
},2000);

if(!vm.isTyping){
vm.sendTyping();
} else{
//
}
};

这是输入字段代码:
<input type="text" placeHolder="Type a message here" 
ng-model="vm.newMessage"
ng-blur="focusRemove(vm.newMessage,vm.contact)"
ng-change="vm.checkTyping()"
ng-model-options="{'debounce': 500}"
ng-keydown="vm.onKeyDown($event)" auto-focus />

我面临的问题是,我无法在用户每次按下任何键时发送打字,第一次按键时发送一次打字,然后我应该在用户停止打字时发送暂停。

任何人都可以帮助我在 angular js 中实现代码来实现这一点。

最佳答案

您可以尝试的是ng-keyup您包含的属性 input标签。所以当用户开始输入时,你设置标志 vm.isTyping = true .当用户停止输入时有一个 timeout在您的 ng-keyup处理程序,这将设置 vm.isTyping = false经过一段时间。引用下面的代码片段

function myappCtrl($scope, $timeout) {
var timoutPromise = null;
$scope.newMessage = "";
$scope.isTyping = false;

$scope.checkTyping = function() {
$scope.isTyping = true;
if(timoutPromise) {
$timeout.cancel(timoutPromise);
}
}

$scope.stoppedTyping = function() {
timoutPromise = $timeout(function() {
$scope.isTyping = false;
}, 2000)

}
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app>
<div ng-controller="myappCtrl">
<input type="text" placeHolder="Type a message here" ng-model="newMessage" ng-change="checkTyping()" ng-keyup="stoppedTyping()"/>
<div ng-if="isTyping">
typing
</div>
</div>
</div>

关于angularjs - Angular js 输入框输入和暂停,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39263318/

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