1

(編集:少し下の簡略化されたもの)

{{#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())
        }
    })
   })
});
4

2 に答える 2

2

私はあなたのifをあなたの見解に入れたいと思います。このようなもの:

 <script type="text/x-handlebars" data-template-name="people">
      <a {{action toggleMenu}}> toggle </a>
      {{#if App.Nav.show}}
            <div>navigation</div>
      {{/if}}
      <div class="span10">
           <h1>Hello {{name}}</h1>
      </div>
 </script>

次に、アプリケーションビューは次のようになります。

<script type="text/x-handlebars" data-template-name="application">
     <body>
          <div class="row">{{outlet}}</div>
     </body>
</script>

あなたがそれを試し、それがうまくいったかどうか私に知らせてください。

于 2012-12-06T07:53:22.003 に答える
1

connectOutletビューの表示には使用しませんでした。connectOutletメソッドの使用の背後に何らかの目的があるかどうかを教えてください。一方ビューの可視性を切り替える実装は次のとおりです。

于 2012-12-06T14:42:06.170 に答える