mercredi 24 juin 2015

Wrapper Component for Form Controls

I'm looking for a pattern to make a wrapper component for form controls.

Its role: wrap any kind of component, (handle error states, messages)

Syntax:

{{form-control-group type="my-input" label="Some fancy label:"}}

templates/components/form-control-group.hbs

{{#if hasError }}
  {{error}}
{{/if}}
{{label}}
{{component type}}

It works nice, as long as I don't need any attribute for my-input component. Usually it is not the case. Let's say I need pass the value. I could do

{{component type value=value}}

But as not that flexible as I wanted to have it. I will gonna use it with different form controls, ex.: select, checkbox etc. They all need different attributes. I also could prepare for this different attributes:

{{component type 
  value=value
  content=content
  contentPath=contentPath
  disabled=disabled
  checked=checked
  ...
}}

In this way it can be used only with the component it is prepared for. If it is published as part of a form addon, and its consumer want to use with a datapicker component, it won't pass down the attributes.

Question:

Is there a way to stream down ALL the attributes passed to form-control-group component?

Maybe the whole concept is wrong, and there is a better pattern to handle this. Any critics and / or ideas are most welcome.

Edit

To be clear: in this question: "setProperties" does not pass "attrs" as expected I tried to solve this very problem, passing down the attrs hash, which contains all the attributes. Maybe Ember is not ready for this, but I'm sure there is a workaround.




Aucun commentaire:

Enregistrer un commentaire