Hex
Hex

Reputation: 444

How to not trigger watch when data is modified on specific cases

I'm having a case where I do wish to trigger the watch event on a vue project I'm having, basically I pull all the data that I need then assign it to a variable called content

content: []

its a array that can have multiple records (each record indentifies a row in the db) Example:

content: [
           { id: 0, name: "First",  data: "{jsondata}" },
           { id: 1, name: "Second", data: "{jsondata}" },
           { id: 2, name: "Third",  data: "{jsondata}" },
        ]

then I have a variable that I set to "select" any of these records:

selectedId

and I have a computed property that gives me the current object:

selectedItem: function () {

    var component = this;

    if(this.content != null && this.content.length > 0 && this.selectedId!= null){

      let item = this.content.find(x => x.id === this.selectedPlotBoardId);

      return item;
    }

  }

using this returned object I'm able to render what I want on the DOM depending on the id I select,then I watch this "content":

watch: {
  content: {
    handler(n, o) {

      if(o.length != 0){
         savetodbselectedobject();
      }
     
    },
    deep: true
  }
}

this work excellent when I modify the really deep JSON these records have individually, the problem I have is that I have a different upload methord to for example, update the name of any root record Example: changing "First" to "1"

this sadly triggers a change on the watcher and I'm generating a extra request that isnt updating anything, is there a way to stop that?

Upvotes: 2

Views: 2225

Answers (1)

ElsaKarami
ElsaKarami

Reputation: 646

This Page can help you.

you need to a method for disables the watchers within its callback.

Upvotes: 1

Related Questions