我正在尝试找出如何最好地将 Ember.js 状态图拆分为多个文件。
使用 SproutCore,我们需要使用 SC.State.plugin('statename') 将我们在另一个文件中定义的状态与我们的主状态图相关联。
我在 Ember 中没有看到这样的功能,所以我只是简单地向我的 statemanager 的状态哈希添加了一个新状态。(另见我的jsFiddle)
App.statemanager = Ember.StateManager.create({
stateOne: Ember.State.create(....)
})
// new file:
App.statemanager.states.stateTwo = Ember.State.create(....)
起初这似乎可行——我能够转换到我定义的新状态。然而,我发现我无法使用一个动作从这个状态转换出来:
App.statemanager.states.stateTwo = Ember.State.create({
doSomething: (manager) {
manager.transitionTo("stateOne");
}
)}
App.statemanager.send("doSomething"); // throws error when trying to transition
我在本地得到的错误是
Uncaught Error: assertion failed: You need to provide an object and key to `get`.
Ember.StateManager.Ember.State.extend.findStatesByRoute
我在jsFiddle中遇到的错误是
Uncaught TypeError: Cannot read property 'length' of undefined
Ember.StateManager.Ember.State.extend.contextFreeTransition
Ember.StateManager.Ember.State.extend.transitionTo
有谁知道为什么会发生这种情况,以及分解状态图的正确方法是什么?