Я пытался узнать Ember и недавно потратил много времени на ссылку на базу кода Discourse на github. Во всяком случае, я хотел реализовать что-то похожее на их метод modal
и не понимаю, почему currentViewBinding
не работает.Ember currentViewBinding на ContainerView
Ниже приводится комбинация информации ссылки из этих ссылок:
Ember.ContainerView
documentation: Binding a view to display- Discourse's
modal_view.js
file on GitHub - Discourse's
modal_controller.js
file on 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>
Когда приложение изначально загружается, я получаю консоли журналы для «вида модальной изменилось», когда я нажимаю кнопку {{action toggleLogin}}
в шаблоне заголовка, ничего не происходит для сообщения консоли «HeaderController исключения. toggleLogin ".
Что я делаю неправильно или это не так, как Ember.ContainerView
docs предназначено для его работы?
Похоже, что 'currentView' устанавливается ... но всегда остается в состоянии' preRender'. – bschaeffer