Polymer::Attributes: couldn't decode Array as JSON: {{test}}<head>
<base href="https://polygit.org/polymer+v2.0.0/shadycss+webcomponents+1.0.0/components/">
<link rel="import" href="polymer/polymer.html">
<div class="toolbar">
</head>
<body>
<dom-module id="custom-form">
<template>
<style>
:host {
display: block;
}
</style>
<div>
<div>
<pre>[[attr]]</pre>
<template is="dom-repeat" items="{{attr}}">
<label>{{item.title}}</label>
<input type="{{item.type}}"
required="{{item.required}}"
value="{{item.value}}"
disabled="{{item.disabled}}"
size="{{item.size}}"
oninput="{{item.oninput}}"
on-click="{{item.onclick}}"
onchange="{{item.onchange}}"
onfocus="{{item.onfocus}}"
onkeydown="{{item.onkeydown}}"
onkeypress="{{item.onkeypress}}"
onkeyup="{{item.onkeyup}}()"
>
</template>
</div>
</div>
</template>
</dom-module>
<custom-form attr="{{test}}"></custom-form>
</body>/**
* @customElement
* @polymer
*/
class CustomForm extends Polymer.Element {
static get is() {
return "custom-form";
}
static get properties() {
return {
attr: {
type: Array
}
};
}
}
customElements.define(CustomForm.is, CustomForm);
let test = [
{
element: "input",
type: "text",
title: "Name",
name: "name",
value: "",
size: "30",
class: "",
required: "required",
disabled: "",
onblur: "",
onchange: "",
onclick: "display()",
onfocus: "",
oninput: "",
onkeydown: "",
onkeypress: "",
onkeyup: "",
id: 0
},
{
element: "checkbox",
type: "checkbox",
title: "Checkbox",
name: "name",
value: "",
size: "30",
class: "",
required: "required",
disabled: "",
onchange: "",
onclick: "",
onselect: "",
id: 1
}
];
function display(){
alert("hi");
}You are using polymer binding outside of dom-module. That will not work. In order to test your element you can pass it an array like
<custom-form attr="[1,2,3,4,5]"></custom-form>
<custom-form attr='[{element: "input", type: "text", title: "Name", name: "name", value: "", size: "30", class: "", required: "required", disabled: "", onblur: "", onchange: "", onclick: "display()", onfocus: "", oninput: "", onkeydown: "", onkeypress: "", onkeyup: "", id: 0 }, {element: "checkbox", type: "checkbox", title: "Checkbox", name: "name", value: "", size: "30", class: "", required: "required", disabled: "", onchange: "", onclick: "", onselect: "", id: 1 }]' ></custom-form>