The result is strange. As you can see, when the addItem functions is triggered, the model data can be modified successfully, according to the console output. However, this change cannot be shown in the web page, just like nothing happened.

push() is a native JS array method. As the ember guys didnt want to override native methods, they extended the array with the addObject() method, so they could implement their own logic. At least thats what I think.