Ember.js - Ember.js 车把内的视图有条件:视图未显示

Ember.js - Ember.Js View inside handlebars conditional: view not being displayed?

本文关键字:视图 js Ember 有条件 显示      更新时间:2023-09-26

我在表格中有一个车把条件语句,里面我有一个视图。

如果我删除条件,则会显示视图模板。如果我删除视图模板,将显示直接的 html。但是,如果两者都存在,则永远不会显示视图模板,并且控制台中不会显示任何错误:

<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>

我做错了什么?

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

我怀疑答案可以在这一行的某个地方找到:

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

我最好的猜测是{{#if}}块在插入时重新渲染,这会破坏其中的"子"{{#view}}块。

将您的

条件移动到视图中。 看这个 JS小提琴

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