Я не могу получить доступ к железной форме внутри 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> может помочь там.

Другие вопросы по тегам