Ember.js-如何将视图绑定到状态管理器,并确保视图得到渲染



我正在使用StateManager来控制弹出模式的状态(例如,状态为"open.edit"、"open.show"one_answers"closed")。我想在这里使用状态管理器,因为模态非常复杂,需要它自己的事务(我使用的是Ember数据)。

我可以在ModalStateManager上设置适当的数据、视图和控制器。

但是,视图(在本例中为App.ModalView)从未在DOM中呈现。我之所以知道这一点,是因为我在App.ModalView的didInsertElement函数中放入了日志记录语句,而这些语句永远不会被记录。

当有人单击按钮打开模态时,我如何渲染视图

以下是当有人单击打开模态时在我的ModalStateManager上运行的代码。

App.ModalStateManager = Ember.State.create({
closed: Ember.State.create({
open: function(manager, modalData) {
var view = App.router.get('applicationController').connectOutlet("modal", modalData); 
//this is working
//the view returned is the ModalView; it has a ModalController with expected content
manager.transitionTo('open.show'); 
}
})
//omitting other states for simplicity
)}

更大的问题:应该如何构建一个具有多个状态和动态数据,但在路由器中没有自己的url或状态的视图例如,想象一个页面上有一系列独特的项目。点击一个项目会弹出一个显示项目内容的模式,允许用户编辑和保存它。该模式在路由器中没有自己的url或状态,所以它不像在路由器中设置一个动态状态/:item_id那么容易,可以很容易地连接和更新

在我们的一个应用程序中,我们有一个PanelManager(StateManager的子类),用于处理模式的状态。还有一个PanelController,它具有我们的面板容器视图为className和可见性绑定的属性。当从关闭状态转换到特定的打开状态(例如showingEditPanel)时,管理器设置类名和可见性属性,并调用panelController上的connectOutlet,以在面板容器中显示正确的视图/控制器组合。可以在每个打开状态下使用嵌套状态来建模额外的复杂性。

相关内容

最新更新