{{#if}} {{else}}条件更改时,手柄视图无法刷新

时间:2012-12-06 00:48:36

标签: ember.js

(编辑:稍微简化一下)

我有一个带有{{#if etc}}条件的把手模板,当我更改关联数据时,视图第一次更新,但随后不会继续更新后续更改。我正在切换一个处于条件状态的布尔值,我知道切换正在运行并切换属性,因为我可以在控制台上看到它,但实际的视图,我说,只刷新一次。在我的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())
        }
    })
   })
});

2 个答案:

答案 0 :(得分: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>

如果您尝试过它,请告诉我它是否有效。

答案 1 :(得分:1)

我没有使用connectOutlet来显示视图,如果使用connectOutlet方法背后有一些目的,请告诉我。同时here是我切换视图可见性的实现