我正在使用 StateManager 来控制弹出模式的状态(例如,状态是“open.edit”、“open.show”和“close”)。我想在这里使用状态管理器,因为模式非常复杂并且需要它自己的事务(我使用的是 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
在路由器中设置可以轻松连接和更新的动态状态那么容易。