我一直在尝试学习 Ember,最近花了很多时间在 github 上参考Discourse代码库。无论如何,我想实现类似于他们的modal
视图方法的东西,但不明白为什么currentViewBinding
不起作用。
以下是从这些链接中引用的信息的组合:
Ember.ContainerView
文档:绑定要显示的视图- Discourse
modal_view.js
在 GitHub 上的文件 - Discourse
modal_controller.js
在 GitHub 上的文件
App.HeaderController = Ember.Controller.extend
templateName: 'application/header'
needs: ['modal']
toggleLogin: ->
console.log "HeaderController.toggleLogin"
@get('controllers.modal').show(App.LoginView.create())
App.ModalController = Ember.Controller.extend
show: (view) ->
@set('currentView', view)
App.ModalView = Ember.ContainerView
currentViewBinding: 'controller.currentView'
viewChanged: (->
console.log "Modal view changed"
).observes('controller.currentView')
App.LoginView = Ember.View.extend
templateName: 'modal/login'
我的观点基本上是这样的:
<!-- application.hbs -->
{{render header}}
{{outlet}}
<!-- header.hbs -->
<button {{action toggleLogin}}>Login</button>
{{render modal}}
<!-- modal/login.hbs -->
<h2>Login Form!!</h2>
当应用程序最初加载时,我得到2 个控制台日志,用于"Modal view changed",当我单击{{action toggleLogin}}
标题模板中的按钮时,除了控制台消息"HeaderController.toggleLogin"什么都没有发生。
我做错了什么,或者这不是Ember.ContainerView
文档的工作方式吗?