<< 点击显示目录 >> 主页 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 = "MainPage"">
<Action>
<Target xsi:type="opcUa.NodeAction" refId="::AsGlobalPV:Variable1" >
<Method xsi:type="opcUa.NodeAction.SetValueNumber" value="1" />
</Target>
</Action>
</EventHandler>
</EventBinding>