如何在Ember.js中定义并发状态?

时间:2012-02-06 17:10:35

标签: javascript ember.js statechart

我想在Ember.js中定义并发状态,但缺乏文档使得很难弄清楚如何。

您可以定义互斥状态(系统位于foobar),如下所示:

App.stateManager = Ember.StateManager.create({
    foo: Ember.State.create({
        //...
    }),
    bar: Ember.State.create({
        //...
    })  
});

编辑:回复ud3323

不是以下并发状态吗?

App.stateManager = Ember.StateManager.create({
    foo_baz: Ember.State.create({
        foo: Ember.State.create({
           // ...
        }),
        baz: Ember.State.create({
           // ...
        })
    }),
    bar: Ember.State.create({
        //...
    })  
});

但是如何定义并发状态,例如,当系统处于foo状态时,它也处于baz状态。

3 个答案:

答案 0 :(得分:2)

对于并发状态,您需要使用statechart add-on。到目前为止,并发还没有实现到enber-states ......

修改

并发状态===正交区域(在uml状态机设计的世界中)

很抱歉没说清楚。

答案 1 :(得分:2)

看看这个Pull请求。它也与路由包相关联。 https://github.com/emberjs-addons/sproutcore-statechart/pull/16#issuecomment-3747310

DominikGuzei还创建了一个示例应用程序,展示了它的使用方法。我发现理解emberjs和插件之间的当前(总是chainging)关系很有帮助。 https://github.com/DominikGuzei/ember-routing-statechart-example

答案 2 :(得分:1)

您可以使用:Stativus并立即在emberjs中获取完整的状态图功能。它完全重写了旧的SC状态图,没有任何SC cruft。 (gzipped< 3k)

它功能更全面,适用于任何框架。