Javascript Ember.js每个帮助程序不会显示在条件

Javascript Ember.js每个帮助程序不会显示在条件,javascript,ember.js,handlebars.js,Javascript,Ember.js,Handlebars.js,Newbie Ember用户-在模板中条件语句内的每个循环中显示内容时出现问题。如果没有条件,则内容可以列出 我有以下模板: <script type="text/x-handlebars" data-template-name="application"> {{view "App.MenuView" }} </script> <script type="text/x-handlebars" data-template-name="m

Newbie Ember用户-在模板中条件语句内的每个循环中显示内容时出现问题。如果没有条件,则内容可以列出

我有以下模板:

 <script type="text/x-handlebars" data-template-name="application">
  {{view "App.MenuView" }}         
 </script>

  <script type="text/x-handlebars" data-template-name="menu">
  <div class="app-navbar">
   <ul class="app-nav">
   {{#link-to 'applications' tagName="li" href=false }}<a {{action "select_application" on="click"}} href="#nogo">Applications  <b class="caret"></b></a>  
    {{#if showApplications}}
    <ul class="app-subnav">
    {{#each view.content1}}
    <li ><a href="#" {{action "select"  this}}>{{title}}</a></li>
    {{/each}}
   </ul>
   {{/if}}
   {{/link-to}}
</script>

这只是我的猜测,我不确定,但是
{{{if}}
实际上是一个视图。因此,部件
view.content1
访问“IfView”(不知道其正确名称)。并且此视图不具有该属性。事实上,我不建议这样做。我自己也做过这种实现风格,这就是如何使用服务器端应用程序(在服务器端应用程序工作正常)来实现它

我会这样做:

<script type="text/x-handlebars" data-template-name="menu">
  <div class="app-navbar">
   <ul class="app-nav">
   {{#link-to 'applications' tagName="li" href=false }}<a {{action "select_application" on="click"}} href="#nogo">Applications  <b class="caret"></b></a>  

    <!-- Ember adds the class invisible when showApplications is false -->
    <ul {{bind-attr class=":app-subnav showApplications::invisible"}}>
    {{#each view.content1}}
    <li ><a href="#" {{action "select"  this}}>{{title}}</a></li>
    {{/each}}
   </ul>
   {{/link-to}}
</script>

    {{{#链接到“应用程序”标记名=“li”href=false} {{{#每个视图.content1}
  • {{/每个}}
{{/链接到}
为什么我认为这是更好的方法?当您切换属性以显示列表或不显示列表时,Ember不必在此处进行任何渲染。DOM元素仍然存在,Ember所要做的就是切换一个HTML属性,这要快得多这是一种更具陈述性的做事方式,余烬鼓励这种方式。


有关
{{bind attr}}
的详细信息,您可以查看。

我找到了解决此问题的方法。尽管如此,我还是想知道为什么这不起作用。谢谢。我已经发布了一个答案,但是现在我发现你的
{{{link to}
正在包装整个subnav。它为什么要这样做?但是我的答案应该仍然可以帮助你解决原来的问题。这是一个下拉菜单。但是你可能不希望下拉菜单中的所有项目共享指向的相同链接,或者?或者也许我现在不明白:-)这正是我想出的解决方法,所以我想我的方法是正确的。我唯一的问题是在bind attr中使用双冒号“::”。那是打字错误吗?谢谢不,这不是打字错误。你应该看看这些文件。如果我们编写
showApplications:visible:invisible
,这意味着如果showApplications为true,则apply类可见,否则apply不可见。而
showApplications::invisible
意味着如果showApplications不是真的,就直接应用invisible(在真的情况下不要做任何事情)。
<script type="text/x-handlebars" data-template-name="menu">
  <div class="app-navbar">
   <ul class="app-nav">
   {{#link-to 'applications' tagName="li" href=false }}<a {{action "select_application" on="click"}} href="#nogo">Applications  <b class="caret"></b></a>  

    <!-- Ember adds the class invisible when showApplications is false -->
    <ul {{bind-attr class=":app-subnav showApplications::invisible"}}>
    {{#each view.content1}}
    <li ><a href="#" {{action "select"  this}}>{{title}}</a></li>
    {{/each}}
   </ul>
   {{/link-to}}
</script>