1. If you have a complete data set that you want to display (i.e. you don't plan to apply any "diff" to the event set) the recommended way is to assign the array directly to .events.list:
vm.calendar.events.list = [
{ start: ..., end: .... }
// ...
];
vm.calendar.update();
This is the fastest way to update events.
2. You can also add them one-by-one using dp.events.add(). In this case it's not necessary to call dp.update() when the loop is complete.
Note that the changes made using dp.events.add() and dp.events.update() are merged and they are displayed when you are done (i.e. the calendar is refreshed only once). The update is postponed using setTimeout() - it's executed asynchronously.
3. If the events still don't update you should check the event data - a common problem is that the resource ID doesn't match.
You can also check if the events are correctly added to the dp.events.list array (print it to console) when using method #2.
Let me know if it didn't help.