Я не могу получить доступ к железной форме внутри DOM-повтора с помощью индекса
Я загружаю некоторые записи из базы данных cassandra (используя iron-ajax и dom-repeat) и, щелкая по одной строке, я открываю бумажный диалог, где значения загружаются в железную форму, содержащую редактируемые поля ввода бумаги. После редактирования я должен быть в состоянии сделать отправку, чтобы обновить запись в базе данных, но с помощью бумажной кнопки это не работает (по крайней мере, с помощью простой кнопки пытается отправить контент на REST, но конец заканчивается 415 ошибка). Я попробовал что-то вроде этого:
<iron-ajax id="get_drafts" auto handle-as="json" last-response="{{drafts}}"></iron-ajax>
<template is="dom-repeat" items="{{drafts}}" as="item">
<div>{{item.field1}}</div>
<span><paper-button title="edit" on-click="openEditDialog"></paper-button></span>
<paper-dialog id="incidentEditDialog{{index}}" with-backdrop>
<form is="iron-form" action="/" id="myForm{{index}}" method="post">
<paper-input value="{{item.field1}}"><paper-input>
<paper-button raised on-click="submit">Submit</paper-button>
</form>
</paper-dialog>
</template>
и затем попробовал все варианты скриптов, которые не работали, я думаю, главным образом потому, что мне не удалось идентифицировать форму с помощью id - myForm{{index}} . Я нашел все виды примеров, но ничего с этим поворотом (формы внутри dom-repeat). По крайней мере, это возможно? Как я должен попытаться сделать это? Спасибо! Если я использую:
<paper-button raised onclick="clickHandler(event)">Submit</paper-button>
а затем метод
function clickHandler(event) {
Polymer.dom(event).localTarget.parentElement.submit();
}
Я получаю ошибку 415: произошла непредвиденная ошибка (тип = неподдерживаемый тип носителя, статус =415). Тип контента 'application/x-www-form-urlencoded' не поддерживается
1 ответ
Проблема в том, что <form>
(даже расширенный с железной формой) не будет работать так же легко с бумажной кнопкой, как с родной <button>
или же <input>
,
Когда вы делаете on-click="submit"
на кнопке бумаги, вам нужно будет определить submit
метод (так же, как вы делаете с clickHandler в вашем примере).
Если вы не хотите этого делать, хороший обходной путь - обернуть кнопку бумаги в нативную кнопку:
<button tabindex="-1">
<paper-button>Submit</paper-button>
</button>
Там есть отрицательный tabindex, поэтому оболочка не может получить фокус.
Ошибка Unsupported Media Type - отдельная проблема, но добавление content-type="application/json"
на ваш <form>
может помочь там.