0

有人可以告诉我如何使用 XForms 编写代码,XForms 是一个允许人们选择上传图片文件的小部件,如有必要,可以重复使用?也就是说,用户一次上传一张照片,但如果有必要,可以选择一次又一次地继续上传。

它可以是元素,也可以只是一个简单的元素。我不确定重复元素与触发元素的关系如何。是否重复元素告诉 XForms 处理器重复显示哪些 UI 元素?触发元素是更新底层模型的按钮?

我不清楚如何捕获这些信息。我是否需要大致类似的东西:

<xforms:repeat 
                <xforms:trigger>
                    <xforms:label>Add pic</xforms:label>
                    <xforms:upload
                        ref="data/picture[@id='1']"
                        mediatype="image/*">
                    </xforms:upload>
                </xforms:trigger>
</xforms:repeat>

例如,如果用户上传了 5 张图片,是否可以将每张图片识别为 pic1、pic2、pic3?

谢谢!

4

1 回答 1

0

Xforms 重复元素在现有数据中重复显示,您要做的是显示现有照片并插入新照片。XForms wikibook 非常全面,因此您可能想查看http://en.wikibooks.org/wiki/XForms/Inserthttp://en.wikibooks.org/wiki/XForms/Repeat_into_table

下面是一个未经测试的示例,它应该可以很好地指示您需要做什么。

<html 
   xmlns="http://www.w3.org/1999/xhtml" 
   xmlns:xf="http://www.w3.org/2002/xforms" 
   xmlns:ev="http://www.w3.org/2001/xml-events">
   <head>
      <title>XForms insert example</title>
      <xf:model>
         <xf:instance>
            <Data xmlns="">
               <Photo name="My Photo">
                    <!-- Data here -->
               </Photo>
               <NewPhoto name="">
               </NewPhoto>
            </Data>
         </xf:instance>
      </xf:model>
   </head>
   <body>
      <fieldset>
         <legend>Company Phone List</legend>
         <p>
            <b>Uploaded Photos...</b>
            <ul>
            <xf:repeat id="list" nodeset="/Data/Photo">
               <li><xf:output ref="@name" /></li>
            </xf:repeat>
            </ul>
         </p>
      </fieldset>
      <fieldset>
         <legend>Add New Photo</legend>
         <p> <!-- here is where we get the new record -->
            <xf:input ref="/Data/NewPhoto/@name">
               <xf:label>Photo Name:</xf:label>
            </xf:input>
            <xforms:upload
                        ref="/Data/NewPhoto"
                        mediatype="image/*">
            </xforms:upload>
            <xf:trigger>
               <xf:label>Insert... </xf:label>
               <xf:action ev:event="DOMActivate">
                  <xf:insert nodeset="/Data/Photo" at="index('list')" position="after" />
                  <xf:setvalue ref="/Data/Photo[index('list')]/@name" value="/Data/NewPhoto/@name" />
                  <xf:setvalue ref="/Data/Photo[index('list')]" value="/Data/NewPhoto" />
               </xf:action>
            </xf:trigger>
         </p>
      </fieldset>
   </body>
</html>
于 2013-05-17T01:30:10.317 回答