Hi,
I'm using polymer in my project and it works well. Until recently I'm start create my CustomElement dynamically. Basically I define a template and a constructor so that I can create my CustomElement by constructor in script.
I notice when I call the the constructor, the created and ready event will be triggered immediately. That makes me hard to adjust settings for CustomElement.
For example, I have the following template:
<polymer-element
name="fire-ui-unit-input"
constructor="FireUnitInput"
>
<template>
<link rel="stylesheet" href="unit-input.css">
<input id="input"
class="input"
type="text"
placeholder="-"
></input>
<span class="unit">{{unit}}</span>
</template>
<script>
Polymer('fire-ui-unit-input', {
publish: {
value: null,
unit: '',
type: 'int', // int, float
precision: 2,
interval: null,
min: null,
max: null,
focused: {
value: false,
reflect: true
},
},
ready: function() {
switch ( this.type ) {
case 'int':
this._min = (this.min!==null) ? parseInt(this.min) : Number.NEGATIVE_INFINITY;
this._max = (this.max!==null) ? parseInt(this.max) : Number.POSITIVE_INFINITY;
this._interval = (this.interval!==null) ? this.interval : 1;
break;
}
},
}
</script>
</polymer-element>
And In some case I have to dynamically create this CustomElement like this:
var unitInput = FireUnitInput();
unitinput.unit = 'cm';
unitinput.type = 'float';
Since the constructor of my CustomElement immediately call ready(), I don't have a chance to pass unit and type attributes to it. In the code above, I have to manually call unitInput.ready() again or some other function to do the init stuff.
My question is: is there a way to let the CustomElement's constructor receive attributes from code?