10

I have an application using vue.js. I generate a list of results using v-for in an array of objects. when I update the object inside nth item in array, using underscore _.extend, the view of project does not update. There is a solution for this problem at http://vuejs.org/guide/reactivity.html which indicates to use _.extend like this:

this.results.displayed[key] = _.extend({}, this.results.displayed[key], detail.items);

but the problem is when I use extend like it said, it does not update the view.

1
  • 1
    There's not enough information to figure out what is wrong. Can you recreate this in a fiddle? Commented Feb 7, 2016 at 17:50

2 Answers 2

13

Vue is unable to detect the change when you set a new item by array index. To get around this, you can use the $set() method that Vue adds to the array.

var newObject = _.extend({}, this.results.displayed[key], detail.items);
this.results.displayed.$set(key, newObject);

More info here.

Sign up to request clarification or add additional context in comments.

1 Comment

Here's a jsfiddle demonstrating use of .$set
1

I solved my problem of items in v-for not updating, by making sure that the tag containing the v-for was wrapped by a tag.

It had been wrapped in a v-ons-list. And I could imagine some people wrapping it in a div tag. This is a quick possibility to eliminate before trying all the other more complicated solutions out there.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.