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
なぜこれが起こっているのか、ステートチャートを分割する正しい方法は何ですか?