Transmitting information after a delay when using ng-keyup in AngularJS

In my Angular app, I am using ng-keyup to search data from my backend. However, the issue is that it sends a request to the server with every key press. Is there a way to configure it to send a post request only after the user has paused or stopped typing? Or should I avoid using ng-keyup for this purpose?

Here is my HTML code:

<input ng-keyup="search(data)" ng-model="data" type="text"/>

This is the function in my controller:

$scope.search=function($scope, $http){
   ....insert HTTP post codes here...
}

Answer №1

If you need to delay updating a model in AngularJS, you can use the debounce option with ng-model.

Simply include

ng-model-options="{ debounce: 1000 }"
in your input field.

Answer №2

To implement a delayed search functionality in AngularJS, you can utilize the ng-change directive along with $timeout.

Note: It is important to inject both $http and $timeout into your controller if you are using $http as a parameter in your search method.

<input ng-change="search(data)" ng-model="data" type="text"/>

JavaScript code snippet

var handle;
$scope.search = function(data){
   if(handle){
        $timeout.cancel(handle);
        handle  = null;
    }
    handle = $timeout(function(){
       // Perform the $http post request here
    }, 1000);
};

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Error: Uncaught object in AngularJS ngRoute

I keep encountering an uncaught object error in my browser console while trying to load my AngularJS application. I am unsure if this issue is related to ng-route.js or if it's something else, as the error message only says 'uncaught object' ...

Javascript event triggering twice

I have created this code snippet to showcase the issue I am facing. main.php <body> //some html <script> function fx1(){ $(".elem").click(function(){ alert("hello"); }) } </script> //some html again include sub-acc.php & ...

Slider Jquery - Displaying Half-Step Visual Bar Lengths

JSFIDDLE $(function() { $( "#slider-range-min" ).slider({ range: "min", value: 5, min: 0, step: .5, max: 10, slide: function( event, ui ) { $( "#amount" ).val(ui.value); ...

Instructions for rotating a Vector3 in Three.js along an axis

Is there a way to rotate a Vector3 from Three.js around an axis by a specific angle? I need help with this process. ...

Changing the anchor tags within a string and returning the modified string using a JavaScript function

When retrieving string data from a CMS, I noticed it contains anchor links that need to be modified. For my app built using the Ionic Framework, I want to add an onClick function to these "a" tags to utilize the "inappbrowser" Cordova plugin. To do this, ...

AngularJS HTTP request not functioning properly with duplicate requests in Postman

My postman request is working fine, but the equivalent in angularJS isn't. I'm able to get the response I need in Postman, but for some reason, it's not working in Angular. var settings = { "async": true, "crossDomain": true, ...

Executing functions in a loop using Angular

Within my component, there is a foreach loop triggered when a client is selected. Inside this loop, I need to execute a function within the same component. The issue arises with calling the function using `this.functionName()` because 'this' no ...

Displaying only the final item from an array when clicking in an ng-repeat loop

My objective is to display the details of each value from my data in a pop-up window. However, instead of showing three different values, the pop-up only displays the last value from an array three times. This is the HTML code I am using: <div ng-re ...

The random quote generator or current tweet quote feature is malfunctioning

I am having trouble with a jQuery on click function that is not working to tweet the current quote. I am working on building a random quote machine and tweeting the current quote is essential. Despite successfully implementing the JSON API, I cannot seem t ...

When combining React and ReactDOM with browserify, the resulting bundle size exceeds that of react.min.js and react-dom.min.js

I'm currently working through the React beginner's tutorial and things are going smoothly so far. However, I decided to delve into importing external packages and began using tools like npm, browserify, watchify, etc. In the tutorial, there is a ...

Steps to insert a style tag into the head using an AngularJS directive

Greetings! Users have the option to choose between printing reports in landscape or portrait format. I am interested in finding out if it is feasible to incorporate the following code snippet into the header of a web document using an AngularJS directive. ...

Retrieve the information in a div element from an external website by utilizing AJAX

Exploring the world of AJAX is new to me, and I am eager to fetch content from a div on an external site and display it on my own website. Below is the current code snippet I have: <html> <head> <script src="https://ajax.googleapis.com ...

Merging a prop of array type in a Vue component

I'm encountering an issue in my component where using the splice function on an array prop does not trigger the $emit event. Can anyone provide some insight into why this might be happening? The removeItem method is called by clicking a button. View ...

Maintaining datatype integrity in MongoDB Stitch when decrementing with update statements

Using a MongoDB Stitch function, I have two collections: communities and posts. Whenever a new document is inserted in the post collection, I need to increment the summary.postCount in the communities collection by +1. Similarly, when the status of a post ...

Looking for a way to detect changes in a select menu using Angular?

How can I determine with the openedChange event if there have been any changes to the select box items when the mat select panel is closed or opened? Currently, I am only able to detect if the panel is open or closed. I would like to be able to detect any ...

Switch between visibility of objects with toggle button

I have set a background image on the body, and positioned a large box, footer, navigation bar, and header above it. In order to add functionality to slide these elements up and down, I've created two buttons with classes 'slideUp' and &apos ...

Tips for efficiently importing a file or folder that is valuable but not currently in use

I'm struggling to find any information about this particular case online. Perhaps someone here might have some insight. I keep getting a warning message saying 'FournisseursDb' is defined but never used no-unused-vars when I try to import t ...

Caution: It is important for each child in a list to possess a distinct "key" prop. This is a crucial step in

Just started learning react and encountered this warning message: Warning: Each child in a list should have a unique "key" prop. Check the render method of `TravelerStoriesPage`. Here's the code snippet for TravelerStoriesPage: const Trave ...

What is the method for invoking an express middleware function that triggers a file download?

Currently, I am delving into Express and experimenting with middleware. My goal is to initiate a file download when accessing the root route while sending out a "Hello World" message. My attempts so far have been: function initiateDownload(req, res, next) ...

What is the best way to dynamically change the JSON-LD Script for the Schema?

Below is the script in question. Please read through it carefully. <script type="application/ld+json"> { "@context": "http://schema.org/", "@type": "Product", "name": "Bat, &q ...