Guidelines:
- Call init once and render many times
- Call init to do model loading and when done call render
- Call deinit when remove view and set controller to null
- When a view that is to be reused is hidden, it can
- stop listening for model changes so that it doesn't render when
not being shown, and then always render when going back to the
view
- or keep listening for model changes, but don't render, instead
set a flag and then when going back to the view, if any model
changes happened that it cares about, it can then render
Windows that persist:
- Home categories
- PDP
- Product search
- Customer search
- Customer profile
- Checkout tabs
- Cart
- Shipping
- Billing
- Ship methods
- Payments
Windows that should be dismissed:
- Price overrides
- Remove overrides (components/removeOverride)
- Customer order details
- Message dialogs
- Popup
- Windows