跳转到内容

XForms/绑定多个实例

来自维基教科书,开放世界中的开放书籍

您通常希望能够绑定到不同模型中的不同实例。此示例程序向您展示如何执行此操作。创建分离的模型对于允许干净的提交至关重要。您应该始终构建,以便您的提交数据位于单个模型中。但这会在引用数据元素时创建问题,而无需指定该实例属于哪个模型。

请注意,在下面的示例中,group 元素包含每个模型的输出。

屏幕图像

[编辑 | 编辑源代码]
绑定到多个模型中的实例

示例程序

[编辑 | 编辑源代码]
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xf="http://www.w3.org/2002/xforms"
xmlns:foobar="http://www.example.com">
  <head>
   <title>Binds to Multiple Instances in Multiple Models</title>
   <style type="text/css">
     @namespace xf url("http://www.w3.org/2002/xforms");
     body {font-family: Helvetica,sans-serif}
     xf|label {font-weight: bold}
   </style>
   
   <xf:model id="model-1">
   
     <xf:instance id="instance-1-1" xmlns="">
      <Data>
        <Message>Hello World Model 1 Instance 1!</Message>
      </Data>
     </xf:instance>
     <xf:bind id="bind-1-1" nodeset="instance('instance-1-1')/Message" />
     
     <xf:instance id="instance-1-2" xmlns="">
      <Data>
        <Message>Hello World Model 1 Instance 2!</Message>
      </Data>
     </xf:instance>
     <xf:bind id="bind-1-2" nodeset="instance('instance-1-2')/Message" />
     
   </xf:model>
   
   <xf:model id="model-2">
   
     <xf:instance id="instance-2-1" xmlns="">
      <Data>
        <Message>Hello World Model 2 Instance 1!</Message>
      </Data>
     </xf:instance>
     <xf:bind id="bind-2-1" nodeset="instance('instance-2-1')/Message" />
     
     <xf:instance id="instance-2-2" xmlns="">
      <Data>
        <Message>Hello World Model 2 Instance 2!</Message>
      </Data>
     </xf:instance>
     <xf:bind id="bind-2-2" nodeset="instance('instance-2-2')/Message" />
     
   </xf:model>
   
  </head>
  
  <body>
  <h1>Model 1</h1>
   <xf:group model="model-1">
     <xf:output ref="instance('instance-1-1')/Message">
      <xf:label>ref="instance('instance-1-1')/Message":</xf:label>
     </xf:output>
     <br/>
     <xf:output bind="bind-1-1">
      <xf:label>bind="bind-1-1":</xf:label>
     </xf:output>
     <br/>
     <xf:output ref="instance('instance-1-2')/Message">
      <xf:label>ref="instance('instance-1-2')/Message":</xf:label>
     </xf:output>
     <br/>
     <xf:output bind="bind-1-2">
      <xf:label>bind="bind-1-2":</xf:label>
     </xf:output>
   </xf:group>
   <h1>Model 2</h1>
   <xf:group model="model-2">
     <xf:output ref="instance('instance-2-1')/Message">
      <xf:label>ref="instance('instance-2-1')/Message":</xf:label>
     </xf:output>
     <br/>
     <xf:output bind="bind-2-1">
      <xf:label>bind="bind-2-1":</xf:label>
     </xf:output>
     <br/>
     <xf:output ref="instance('instance-2-2')/Message">
      <xf:label>ref="instance('instance-2-2')/Message":</xf:label>
     </xf:output>
     <br/>
     <xf:output bind="bind-2-2">
      <xf:label>bind="bind-2-2":</xf:label>
     </xf:output>
   </xf:group>
  </body>
</html>

请注意,您不能跨模型进行绑定。这意味着需要访问多个模型中的实例数据的复杂计算需要在进行计算之前将它们复制到单个模型中。

下一页: 绑定到范围 | 上一页: 条件动作
主页: XForms
华夏公益教科书