2012-09-12 42 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的目的。再次感谢! –