backbone-nested icon indicating copy to clipboard operation
backbone-nested copied to clipboard

Cannot set property of nested array by index dynamically

Open daveed80 opened this issue 11 years ago • 3 comments

I'm attempting to set a property of a nested array dynamically but am unable to do so.

Model :

{"Alias":"sample","Id":0, Traits: [ {"AttrValue":null}, {"AttrValue":null} ] }

This of course works fine:

// this.model.set({ 'Traits[0].AttrValue': 'test' });

This does not:

// var i = 2; // var prop = 'Traits[' + i + '].AttrValue'; // this.model.set({' prop ' : 'test'});

I'm sure I just can't see the sailboat at the moment (exhaustion) so any help would be greatly appreciated.

Thanks in advance!

daveed80 avatar Oct 31 '14 16:10 daveed80

Figure it out?

afeld avatar Oct 31 '14 16:10 afeld

Thanks so much for the reply!

Well, both yes and no...

I just realized I can do:

// var traits = this.model.get('Traits'); // traits[0].AttrValue = 'test'; // this.model.set('Traits', traits);

What I would inevitably like to do is find the 'trait' object from the array by 'AttrName', and set it directly, avoiding needing to know the index and still updating the top level model.

Any suggestions?

daveed80 avatar Oct 31 '14 16:10 daveed80

By the way, excellent work on this!

daveed80 avatar Oct 31 '14 16:10 daveed80