A couple of things are going on here:
- In order for the
gameBingoCards
property to properly receive change notifications, you need to observemodel.bingoCards.[]
, not justmodel.bingoCards
. This may or may not have had any impact on your application. - By ‘everytime the model received an update’, I think you meant after calling
.save()
on the game record. If so, then the reason that thegameBingoCards
computed property is called again is a side effect of how Ember Data properties work: all model attribute/relation properties are computed properties that are dependent on a pseudodata
property that changes every time a record is pushed or saved. So even if the actual relations didn’t change, thebingoCards
property gets notified of a change after being saved. - This is the reason that the
modelBingoCards
property doesn’t get a notification of change: the record array value is now a property on the controller directly, which Ember Data knows nothing about. - Calling
model.reload()
insetupController
is a bit of an anti-pattern, but in the case where you always want to reload the model when hitting this route, you should use the upcomingrefresh
route method. - It’s just a best practice to call
this._super(controller, model);
at the top ofsetupController
, in which case you don’t have to manually callcontroller.set('model', model);
because you get it for free.