Navigating between pages在页面间导航

<< 点击显示目录 >>

主页  mappView帮助助手 > mapp View帮助信息 > 指南 > FAQs > 事件和行动应用 > 事件和行动的行为 >

Navigating between pages在页面间导航

如果一个事件是由于内容中的小组件而触发的,那么只要页面上的内容也是有效的,它的行动就会被执行。

如果在导航的过程中执行了额外的动作(例如,通过部件NavigationButton的 "点击 "事件),那么页面就会改变,这也会改变该片内容的有效性。在这里,同一内容是否也在下一个页面上被引用并不重要。

对HMI应用的影响:

如果  部件NavigationButton的属性 pageId 引用了一个页面,那么NavigationButton的事件 "Click "就不允许被用于事件绑定中的额外操作,因为不可能保证它将在内容片断被禁用之前被执行。

如果触发事件发生在被禁用的内容上,事件绑定将被终止。

<EventBinding>
 <Source xsi:type="widgets.brease.NavigationButton.Event" contentRefId="content_0" widgetRefId="NavigationButton1" event="Click" />
 <EventHandler>
  <Action>
   <Target xsi:type="opcUa.NodeAction" refId="::AsGlobalPV:Variable1">
    <Method xsi:type="opcUa.NodeAction.SetValueNumber" value="1" />
   </Target>
  </Action>
 </EventHandler>
</EventBinding>

解决方案:

在导航过程中,有2种方法可以执行额外的行动:

使用小部件 "按钮Button",按顺序执行行动

可以配置多个动作,以便在小部件 "按钮Button "的 "点击Click "事件中依次执行。客户系统动作 "导航" 必须配置为最后一个动作。

<EventBinding>
 <Source xsi:type="widgets.brease.Button.Event" contentRefId="content_0" widgetRefId="Button1" event="Click"/>
 <EventHandler>
  <Sequence>
   <Step order="0">
    <Action>
     <Target xsi:type="opcUa.NodeAction" refId="::AsGlobalPV:Variable1" >
      <Method xsi:type="opcUa.NodeAction.SetValueNumber" value="1" />
     </Target>
    </Action>
   </Step>
   <Step order="1">
    <Action>
     <Target xsi:type="clientSystem.Action" >
      <Method xsi:type="clientSystem.Action.Navigate" pageId="mainpage" />
     </Target>
    </Action>
   </Step>
  </Sequence>
 </EventHandler>
</EventBinding>

系统变量 clientInfo.currentPageId的事件ValueChanged

所需的行动可以在系统变量clientInfo.currentPageId的ValueChanged事件中配置。该事件处理程序的条件响应所需的页面ID。

<EventBinding>
 <Source xsi:type="session.Event" refId="::SYSTEM:clientInfo.currentPageId" event="ValueChanged"/>
 <EventHandler condition="newValue = &quot;MainPage&quot;">
  <Action>
   <Target xsi:type="opcUa.NodeAction" refId="::AsGlobalPV:Variable1" >
    <Method xsi:type="opcUa.NodeAction.SetValueNumber" value="1" />
   </Target>
  </Action>
 </EventHandler>
</EventBinding>