gpt4 book ai didi

sproutcore - 如何在Sproutcore中留下状态?

转载 作者:行者123 更新时间:2023-12-03 13:38:03 25 4
gpt4 key购买 nike

如何在Sproutcore中保留状态?实际上,我正在搜索以下内容:

MyApp.statechart.gotoState('StateA');

还有另一种方法可以手动离开状态,而不是通过 substatesAreConcurrent: NO属性来控制状态?例如:StateA和StateB是并发的。 StateB有两个嵌套的子状态:StateBa和StateBb。当我从StateBa切换到StateBb时,我想离开StateA。这怎么可能?

先感谢您!

最佳答案

给出一个状态图:

App.statechart = SC.Statechart.create({

substatesAreConcurrent: YES,

stateA: SC.State.extend({
}),

stateB: SC.State.extend({

initialSubstate: 'stateBa'

stateBa: SC.State.extend({
}),

stateBb: SC.State.extend({
})

})

});

您的应用程序同时处于stateA和stateB之内。为了在从stateBa-> stateBb过渡时从stateA过渡到其他状态,我们必须增强stateA如下:
   stateA: SC.State.extend({

initialSubstate: 'stateAa',

stateAa: SC.State.extend({
}),

stateAb: SC.State.extend({
})

}),

实现此目的的惯用方式是在两种状态下处理相同的事件,例如“change”(更改):
App.statechart = SC.Statechart.create({

substatesAreConcurrent: YES,

stateA: SC.State.extend({

initialSubstate: 'stateAa',

stateAa: SC.State.extend({

change: function() {
this.gotoState('stateAb');
}

}),

stateAb: SC.State.extend({
})

}),

stateB: SC.State.extend({

initialSubstate: 'stateBa'

stateBa: SC.State.extend({

change: function() {
this.gotoState('stateBb');
}

}),

stateBb: SC.State.extend({
})

})

});

这样,发送“change”事件将导致两个并发状态都发生状态转换。但是,如果您有兴趣退出并发,则可以像下面这样增强状态图:
App.statechart = SC.Statechart.create({

stateSuperA: SC.State.extend({
substatesAreConcurrent: YES,

stateA: SC.State.extend({

initialSubstate: 'stateAa',

stateAa: SC.State.extend({

change: function() {
this.gotoState('stateAb');
}

}),

stateAb: SC.State.extend({

join: function() {
this.gotoState('stateSuperB');
}

})

}),

stateB: SC.State.extend({

initialSubstate: 'stateBa'

stateBa: SC.State.extend({

change: function() {
this.gotoState('stateBb');
}

}),

stateBb: SC.State.extend({
})

})

}),

stateSuperB: SC.State.extend({
})

});

收到上述“join”事件后,您的应用程序将不再处于并发子状态,而仅处于stateSuperB。

关于sproutcore - 如何在Sproutcore中留下状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11967348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com