In Angular, it is recommended to add objects to a scope instead of primitive values (always having one or more “dots” when accessing your models)
The reason is: prototypical inheritance. As you know, Javascript is different from classical OOP; inheritance is done in a prototypical matter. Angular follows this pattern in a way that scopes inherit prototypically from their parent scopes.
When implemented incorrectly, two-way data binding breaks if you have two or more nested elements that use separate controllers that point to the same model. Here is why:
Imagine you have two nested elements: