私は Ember を学ぼうとしており、最近はgithub で談話コード ベースを参照するのに多くの時間を費やしています。とにかく、ビューメソッドに似たものを実装したかったのですmodal
が、なぜ機能しないのかわかりませんcurrentViewBinding
。
以下は、これらのリンクから参照される情報の組み合わせです。
Ember.ContainerView
documentation: ビューをバインドして表示するmodal_view.js
GitHubの Discourse のファイルmodal_controller.js
GitHubの Discourse のファイル
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>
アプリが最初に読み込まれると、 「Modal view changed」の2 つのコンソール ログが表示されます。ヘッダー テンプレートのボタンをクリックしても、コンソール メッセージ「HeaderController.toggleLogin」以外は何も起こりません。{{action toggleLogin}}
私は何が間違っているのですか、それともEmber.ContainerView
ドキュメントが機能することを意図したものではありませんか?