在Ember.js状态管理器中的状态之间传递数据
我有以下StateManager:在Ember.js状态管理器中的状态之间传递数据,ember.js,Ember.js,我有以下StateManager: Lead.StateManager = Ember.StateManager.extend initialState: 'notParsing' notParsing: Ember.State.create startParsing: (manager, search) -> manager.goToState 'parsing' parsing: Ember.State.create enter: ->
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状态转换为parsing状态,如下所示:
@state_manager.send('startParsing', {search_url: "http://thesoftwaresimpleton.com/"})
我可以通过发送消息传递参数,但不能使用goToState传递参数,因为它只接受name参数
有人能指出我如何将传递到startParsing action的参数传递给startParsing action吗?我不知道我的解决方案是否好,这当然取决于用例,但您可以将属性存储在
管理器本身,请参阅
另一种解决方案是使用控制器,这些控制器是在stateManager
实例上设置的,请参见。我不知道我的解决方案是否好,这当然取决于用例,但您可以将属性存储在管理器本身,请参见
另一种解决方案是使用在stateManager
实例上设置的控制器,请参阅。在sproutcore状态图中,可以使用gostate传递参数。我想知道为什么余烬是不可能的?也许我应该为此使用一个observer。在sproutcore状态图中,可以使用gostate传递参数。我想知道为什么余烬是不可能的?也许我应该用一个可观察的。
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'
});