model: improve property API
component: add #trigger to trigger custom events