我有以下StateManager:
Lead.StateManager = Ember.StateManager.extend
initialState: 'notParsing'
notParsing: Ember.State.create
startParsing: (manager, search) ->
manager.goToState 'parsing'
parsing: Ember.State.create
enter: ->
我可以使用stateManager的send方法从notParsing状态转换到解析状态,如下所示:
@state_manager.send('startParsing', {search_url: "http://thesoftwaresimpleton.com/"})
我可以通过发送消息传递参数但是我不能使用goToState传递参数,因为它只接受名称参数。
有人能指出我如何传递传递给startParsing动作的参数吗?
答案 0 :(得分:1)
我不知道我的解决方案是否合适,并且肯定取决于用例,但您可以在manager
本身上存储属性,请参阅http://jsfiddle.net/pangratz666/6Q39q/。
App = Ember.Application.create({});
App.StateManager = Ember.StateManager.extend({
initialState: 'notParsing',
notParsing: Ember.State.create({
startParsing: function(manager, search) {
manager.set('url', search.searchUrl);
manager.goToState('parsing');
}
}),
parsing: Ember.State.create({
enter: function(manager) {
this._super();
var url = manager.get('url');
console.log('start parsing url: %@'.fmt(url));
}
})
});
var stateManager = App.StateManager.create();
stateManager.send('startParsing', {
searchUrl: 'http://www.google.com'
});
另一种解决方案是使用在stateManager
实例上设置的控制器,请参阅http://jsfiddle.net/pangratz666/Y9KyA/。