I have finally found a good solution. Posting here for the benefit of others.
My code has evolved a bit but basically the key is that I need to call fetch() in order to ensure that the
if
(e.view.params.companyID) {
var
item = e.view.params.companyID;
source.fetch(
function
() {
var
itemModel = source.get(item);
viewModel.set(
'currentItem'
, itemModel);
});
}
else
{
var
item = e.view.params.uid;
var
itemModel = source.getByUid(item);
viewModel.set(
'currentItem'
, itemModel);
}