Ember.js - Ember.Js在车把内查看条件:视图没有显示?

时间:2013-10-18 06:17:35

标签: javascript html ember.js

我在桌子上有一个handlebars conditional statement,在里面我有一个视图。

如果我remove the conditional,则显示视图模板。如果我remove the view template,则显示直接html。但是如果both are there,视图模板永远不会显示,并且控制台中没有显示错误:

<script type="text/x-handlebars" data-template-name="application">
    <table>
        <tr>
            <td>
                <button {{action 'click_me'}}>Click me</button>
            </td>
        </tr>
        {{#if controller.new_visible}}
            {{#view App.MyView}}
            <tr>
                    <td>
                        Hello!            
                    </td>
            </tr>
            {{/view}}
        {{/if}}
    </table>
</script>

我做错了什么?

2 个答案:

答案 0 :(得分:2)

除此之外,似乎(来自http://emberjs.com/guides/understanding-ember/the-view-layer/,第4节)Ember为Handlebars逻辑块助手(如{{#if}}{{#unless}}等)创建虚拟视图。不是常规视图层次结构的一部分,因此它们不能很好地与常规嵌套子视图一起使用。

我怀疑这个问题的答案是在这一行的某个地方找到的:

“当路径传递给{{#if}}{{#with}}更改时,Ember会自动重新呈现虚拟视图,这将替换其内容,重要的是,会销毁所有子视图以释放内存“。 (来自上面链接的部分)。

我最好的猜测是{{#if}}块在insert上重新渲染,这会破坏其中的'child'{{#view}}块。

答案 1 :(得分:1)

在视图中移动您的条件。请参阅此jsFiddle

{{#view App.MyView}}
{{#if controller.new_visible}}
<tr>
    <td>
        Hello!            
    </td>
</tr>
{{/if}}
{{/view}}