(編集:少し下の簡略化されたもの)
{{#if etc}}条件付きのハンドルバーテンプレートがあり、関連するデータを変更すると、ビューは最初に更新されますが、その後の変更では更新されません。状態のブール値を切り替えています。コンソールでそれを確認できるため、トグルが実行されてプロパティが切り替えられていることがわかりますが、実際のビューは1回しか更新されません。私のhtmlファイルでは、これは次のようになります。
<script type="text/x-handlebars" data-template-name="application">
<body>
<div class="row">
{{#if App.Nav.show}}
{{outlet nav}}
{{/if}}
<div class="span10">
<h1>Hello</h1>
{{outlet}}
</div>
</div>
</body>
</script>
さらに少し進んで、切り替えます。
<script type="text/x-handlebars" data-template-name="people">
<a {{action toggleMenu}}> toggle </a>
</script>
そしてjavascriptで:
App.NavController = Ember.Controller.extend();
App.NavView = Ember.View.extend({
templateName: 'nav'
});
App.Nav = Ember.Object.create({
show: true
});
そして最後に、ルーターの関連ビット:
App.Router = Ember.Router.extend({
enableLogging: true,
root: Ember.Route.extend({
index: Ember.Route.extend({
route: '/',
showPerson: Ember.Route.transitionTo('aName'),
toggleMenu: function(){
console.log('Changing the toggle!');
App.Nav.toggleShow();
},
connectOutlets: function(router){
router.get('applicationController').connectOutlet('nav', 'nav');
router.get('applicationController').connectOutlet('allPeople', unrelated_function())
}
})
})
});