See this issue on GitHub.
Shallow Clone
I was using jQuery’s $.extend
until Evan You pointed out there is an undocumented built it extend function Vue.util.extend
that does a shallow clone. So what you could use is:
addItem: function(e) {
e.preventDefault();
this.items.push(Vue.util.extend({}, this.newItem));
}
See the updated Fiddle.
Deep Clone
When doing a shallow clone on an object that references other objects you copy the references to the external objects instead of cloning them. To clone the object completely do a Deep Clone.
For the deep clone, per Evan’s suggestion in the first link, one could use: JSON.parse(JSON.stringify(object))
. This can be seen between this fiddle and this fiddle.
If using lodash check out lodash cloneDeep. If using NPM check out clone-deep.