首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在scxml中引发问题事件

在scxml中引发问题事件
EN

Stack Overflow用户
提问于 2011-05-18 12:04:28
回答 1查看 1.2K关注 0票数 3

下面的scxml代码有问题:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initialstate="global">
    ...
    <state id="global" initial="init">
    ...
    <state id="state2">
        <onentry>
            <if cond="mydata.skip">
                <if cond="_event.name=='ev.prev'">
                    <raise event="ev.prev" />
                    <else/>
                    <raise event="ev.next" />
                </if>
            </if>
       </onentry>
       <transition event="ev.next" target="end" />
       <transition event="ev.prev" target="state1" />
    </state>
    ...
    </state>
</scxml>

它工作正常,但是当我添加onentry元素时,proccessor会这样说:

代码语言:javascript
复制
[WARN] Ignoring element <raise> in namespace "http://www.w3.org/2005/07/scxml" at null:2:882 and digester match "scxml/state/state/onentry/if/if/raise"
[WARN] Ignoring element <raise> in namespace "http://www.w3.org/2005/07/scxml" at null:2:912 and digester match "scxml/state/state/onentry/if/if/else/raise"

加薪似乎是不被理解的。我试着用'send‘one更改'raise’元素,并得到了类似的日志警告。有人能告诉我怎么回事吗?

谢谢。

更新

我试图更改模式,避免像这样嵌入if元素:

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<scxml xmlns="http://www.w3.org/2005/07/scxml" version="1.0" initialstate="global">
    ...
    <state id="global" initial="init">
    ...
    <state id="state2">
        <onentry>
            <if cond="mydata.skip and _event.name=='ev.prev'">
                <raise event="ev.prev" />
                <else if cond="mydata.skip and _event.name=='ev.next'"/>
                <raise event="ev.next" />
            </if>
       </onentry>
       <transition event="ev.next" target="end" />
       <transition event="ev.prev" target="state1" />
    </state>
    ...
    </state>
</scxml>

但它也给出了以下错误:

代码语言:javascript
复制
[WARN] Ignoring element <raise> in namespace "http://www.w3.org/2005/07/scxml" at null:2:1057 and digester match "scxml/state/state/onentry/if/raise"
EN

回答 1

Stack Overflow用户

发布于 2013-06-27 18:16:51

我也没办法让筹款活动发挥作用。但是根据标准:http://www.w3.org/TR/scxml/#raise,您也可以使用发送事件。所以我试了一下,然后我就能做到这一点了。

代码语言:javascript
复制
<state id="testID">
    <onentry>
        <send event="'test.onentry'" />
    </onentry>
    <transition event="test.transition" target="testID2"></transition>
</state>

它按照预期发送事件test.onentry。但是请注意双引号里面的单引号!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6044370

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档