2012-09-12 40 views
2

輸入法,還是我想,當我進入它直接調用的狀態的動作。 (其實在我的應用我想打電話給我的國家的母公司狀態的作用,但最終結果是一樣的。)灰燼狀態沒有完全改變了國家在以前的狀態

在我的應用程序,我從過渡到StateOne StateTwo。當我進入我的狀態StateTwo時,我打電話給manager.send(「myStateTwoAction」)。然而,我立即得到一個錯誤

Uncaught Error: <Ember.StateManager:ember1424> 
    could not respond to event myStateTwoAction in state StateOne. 

注意,這是我StateTwo輸入法

這裏是我的jsfiddle:http://jsfiddle.net/SamFent/YGX2Y/

有誰知道,如果有一種方法,從這個新國家的輸入方法中調用一個國家的行動?

回答

2

不能調用在enter方法的狀態的動作。正如你在這裏看到的:https://github.com/emberjs/ember.js/blob/master/packages/ember-states/lib/state_manager.js#L861 currentState是在調用enter方法後設置的。 但是你可以實現setup方法巫婆被稱爲狀態已經進入之後。

App.StateTwo = Ember.State.extend({ 
    enter: function(manager) { 
    $("#states").append("<p>State two</p>"); 
    }, 
    setup: function(manager){ 
    manager.send("goToThree"); 
    }, 
    goToThree: function(manager) { 
    $("#states").append("<p>=> going to three...</p>"); 
    manager.transitionTo("stateThree"); 
    } 
}), 

見:http://jsfiddle.net/YGX2Y/2/

我希望這對你的作品。

+0

大,這工作得很好,謝謝。雖然我可以說,這真的不是在文檔的所有(http://docs.emberjs.com/#doc=Ember.StateManager)拼寫出來。有一個提到的「設置」動作,它不會告訴你它做了什麼,在狀態轉換之前沒有提到「enter」被調用。但是我們能做些什麼,Ember文檔是如何落後的 - 這就是SO的目的。再次感謝! –