0

我正在从 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”

4

1 回答 1

0

问题是<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>那里可能会有所帮助。

于 2017-11-18T11:52:00.407 回答