我无法通过索引访问dom-repeat中的铁​​形式

时间:2017-11-17 14:07:48

标签: javascript polymer dom-repeat iron-form

我从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错误:出现意外错误(type = Unsupported Media Type,status = 415)。 内容类型&#39; application / x-www-form-urlencoded&#39;不支持

1 个答案:

答案 0 :(得分:0)

问题在于<form>(甚至用铁形式扩展)不能像纸质按钮一样无缝地与原生<button><input>一起使用。

当您在纸张按钮上执行on-click="submit"时,您需要定义submit方法(与您在示例中使用clickHandler的方法相同)。

如果您不想这样做,一个好的解决方法是将纸质按钮包裹在原生按钮中:

<button tabindex="-1"> <paper-button>Submit</paper-button> </button>

负片tabindex存在,因此包装器无法获得焦点。

“不支持的媒体类型”错误是一个单独的问题,但向content-type="application/json"添加<form>可能对此有所帮助。