Ember.js 余烬状态管理器、控制器、视图、模型:如何将它们链接在一起?

Ember.js 余烬状态管理器、控制器、视图、模型:如何将它们链接在一起?,ember.js,Ember.js,我面临一个问题,我需要将状态管理器、控制器和视图链接在一起,同时避免得到一个难看的意大利面代码。问题是:这些对象中哪一个应该首先创建,并且有责任创建其他对象 具体来说,这里是我的例子。首先,该视图是容器视图的一个子类,该容器视图的子级为集合视图: App.MyView = Ember.ContainerView.extend { childViews: ['streamView'] streamView: Ember.CollectionView.extend {

我面临一个问题,我需要将状态管理器、控制器和视图链接在一起,同时避免得到一个难看的意大利面代码。问题是:这些对象中哪一个应该首先创建,并且有责任创建其他对象

具体来说,这里是我的例子。首先,该视图是容器视图的一个子类,该容器视图的子级为集合视图:

App.MyView = Ember.ContainerView.extend {

     childViews: ['streamView']

     streamView: Ember.CollectionView.extend {
     }

}
控制器与Ember.ArrayController的子类一样,具有加载方法:

App.MyController = Ember.ArrayController.extend {
     load: ->
        console.log "loading data"
}
状态管理器的视图状态将实例化App.MyView:

App.MyStateManager = Ember.StateManager.extend {

   initialeState: 'ready'

   ready: Ember.ViewState.extend {

        view: App.MyView    

   }
}
现在我需要运行以下测试:

 controller = App.MyController.create {}
 manager = App.MyStateManager.create {}

 expect(manager.getPath('currentState.name').toEqual('ready')
 expect(controller.load).toHaveBeenCalled()
 streamView = manager.getPath('currentState.view.streamView.content')
 expect(streamView.content).toEqual(controller.content)
为了使最后一个期望生效,我需要将App.MyView的子级streamView的内容与控制器内容绑定。我怎样才能做到干净呢


此外,如何将对状态管理器的引用传递给视图和控制器,以便在某些事件发生时通知管理器,以便它需要转换到另一个状态。例如,单击一个项目或控制器是否完成了一项工作?

看看Yehuda Katz讨论新路由器实现的要点。


建议将路由器和状态管理器作为三层连接的起点。

似乎是一个死链接。