[0.15.x] discussion: v-model vs :prop.sync
-
Many components in 0.15 use
v-model
to control show/hide status. By usingv-model
the data can be changed either from inside the component itself, or from outside. This is a much better way compared with the old way like$ref.xxx.closeLeft()
in 0.14. However,v-model
has two drawbacks:-
one component could has only one
v-model
, so if the component needs two or more double-directional synced props, it does not work (for example, for now QLayoutDrawer usesv-model
since it needs only one prop to control show/hide status – but who knows when in the future it would need more… ); -
v-model
has no declarative name for the prop, so it is hard to understand what thev-model
is for at the first glance, without referring to the documents.
In fact ,
:prop.sync
can do the same thing. A component can have multiple.sync
props, and.sync
also give the prop a name to explicitly show what this prop is for. We see QTree and QTable are already using.sync
props. Maybe it is worth discussing if we should make more use of.sync
rather thanv-model
, say, just turn this:<q-layout-drawer v-model="isLeftDrawerShowing">
to this:
<q-layout-drawer :show.sync="isLeftDrawerShowing">
-