Identify whether the Vue model change was initiated by user input or programmatically

I am facing an issue with Vue's reactivity when using a custom component in Quasar 2. Let me explain the scenario:

  • The custom component includes two radio buttons and a select dropdown.
  • Whenever the user changes one of the radio selections, the select dropdown is automatically reset to null.

Everything works as expected up to this point. However, there is a button that allows the user to overwrite all selections with new values for both the radio buttons and the select dropdown. The problem arises here: When this button is clicked, it replaces the v-model for the component, triggering the watcher for the radio buttons and resetting the select dropdown.

For example:
If the user selects "Domestic" and "Option 1", then clicks the "Overwrite" button, the expected outcome should be "International" with "Option 2". But due to the watcher firing, "Option 2" gets reset.

You can view a demo on StackBlitz:
demo

Answer №1

To enable the overwrite feature, simply trigger it on button click:

function toggleOverwrite() {
  data.value = {
    status: 'activated',
    category: 'Category B',
    overwrite: true
  };
}

To disable the feature, watch for changes and reset it accordingly:

watch(
  () => localData.value.status,
    (newStatus, oldStatus) => {
      if (newStatus !== oldStatus && !localData.value.overwrite) {
        localData.value.category = null;
      } 
      localData.value.overwrite = false
  }
);

In the context of a q-radio element named domestic:

<q-radio 
  v-model="localData.status" 
  val="domestic" 
  label="Domestic"   
  @click="localData.overwrite = false" 
/>

VIEW DEMO

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

The use of async components in Vue.js with named imports

I understand how to dynamically load components asynchronously in Vue. For example, instead of importing MyComponent directly: import MyComponent from '@/components/MyComponent' export default { components: { MyComponent } } We can use ...

Discover instances of a string within an array using JQuery

I am currently exploring how to locate occurrences of a specific string within an array on the client side. The examples provided on the JQuery Docs all seem focused on number comparisons, which isn't quite what I need. Essentially, I'm attempti ...

Using JQuery to enable the movement of divs on a screen through clicking and dragging, without the use of

Recently, I've been experimenting with a small project involving draggable divs. However, the code I've written doesn't seem to be functioning properly, causing JQuery to become unresponsive. Is there an alternative method that is simple an ...

Modify and improve promise and promise.all using the async/await feature of ES2017

I have successfully implemented a photo upload handler, but I am now exploring how to integrate async await into my code. Below is the working version of my code using promises: onChangePhotos = (e) => { e.preventDefault() let files = e.target ...

Activate a change or response when the input value in Javascript is altered

Currently, I am working on a small project using JQuery and facing an issue when trying to remove error classes from HTML elements. To handle the removal of the error classes, I am utilizing $('selector').on('input') event to target th ...

webgl renderer for cytoscape.js

I have been exploring different layout extensions and have examined various examples from existing extensions like arbor, cola, cose-bilkent, as well as the scaffolding provided here. However, I am facing a roadblock when it comes to integrating a webGL re ...

How can I make tooltipster display tooltips properly?

I have been struggling to customize tooltips using a library called tooltipster. Here is what I currently have: Head of index.html: <head> <!--TOOLTIP CSS--> <link rel="stylesheet" type="type/css" href="node_modules/tooltipster-master ...

No change in the element's text content when clicking

I'm working on creating a timer that counts down from either 15 or 30 seconds. However, I'm having trouble changing the text value when the 15 button is clicked. Can someone help me figure out what's wrong? Thank you in advance HTML <h ...

Can someone please provide instructions on how to customize the textfield caret using JavaScript?

Is there a way to modify the appearance of a caret so that it resembles a letter or some other shape? Appreciate any suggestions. Thank you! ...

Using jQuery to load content with a dynamic variable instead of specific element IDs

I am facing a minor jQuery issue. I am trying to load a specific area of an external HTML document into a div, but instead of loading just that particular area, the entire document is being loaded. Here's the code snippet for the trigger: $('a& ...

What is the best way to extract the JSON value from my API website and assign it to a new variable

Currently, I am in need of a way to convert a username into an ID. To accomplish this task, I will utilize the following API link: (where "username" is replaced by the variable name.) The main objective here is to extract the ID value from the provided li ...

Modify the BehaviorSubject upon clicking or focusing on the input

I have created a directive for an input field. I want to trigger a flag in another component when the input is clicked or focused upon. @Directive({ selector: '[appDatepicker]' }) export class DatepickerDirective implements DoCheck{ constru ...

I encountered an error while trying to load the resource from http://premieroptie.nl/wp-content/themes/theme51771/favicon.ico: net::ERR_NAME_NOT_RESOLVED

Upon opening my website URL, computertechnet.nl, I noticed an error when inspecting and checking the console tab. The specific error message is: Failed to load resource: net::ERR_NAME_NOT_RESOLVED for . In addition, a second warning was displayed: G ...

Utilize JavaScript to load images at random within a Qualtrics loop and merge block

I'm currently putting together a survey on qualtrics using a block with loop and merge functionality. I've encountered an issue where, after the first iteration, the images I'm loading through javascript start disappearing. Although I can br ...

Is there a way to populate an array with Twilio fax results and then successfully send them via Express?

Currently, I am working on integrating the Twilio API into our secured backend system before sending the data to our client app. This is being done to protect our API keys and for security purposes. We have successfully implemented fax sending and checkin ...

Issue with creating a variable name inside a JavaScript for loop

Here is the code snippet I am currently working on: var var1 = 58; for(var i=0;i<10;i++){ if(("var"+i) == 58) { console.log("they are equal"); } } I am wondering why ("var" + i) is not equal to 58 in this scenario. Could someone please provide an ...

In what way can data be retrieved from within a useEffect block externally?

Essentially, I'm facing an issue with retrieving data from the DateView component in my ChooseCalendar component. The code that retrieves this data is located within a useEffect block due to passing a dateType variable as part of a useState to the com ...

Use jQuery to retrieve the number of items that have been selected in an ASP ListBox

Struggling to find a way to calculate the count of selected items from an ASP listbox using jQuery. Currently, encountering an issue where I am receiving "Cannot get property length of undefined or null reference" on the selectedOptions property. The var l ...

transfer information from a Node.js server to an Angular client using the get() method

I am trying to access an array of data from a node.js file using angular. In my node.js file, I have the following code: app.get('/search', function(req, res){ res.send(data); }); However, I am facing difficulties retrieving this data in an ...

Alter attribute with an impact

I am looking for a solution to switch the image source using attr, while also incorporating a fade effect in the process. I have attempted to implement one of the suggestions from another post, but it is not producing the desired outcome. Current Appearan ...