Ember if helper仅在第一次解析时

时间:2014-10-27 14:29:32

标签: javascript ember.js handlebars.js

我正在使用Ember js,最新的1.7.0,我希望根据条件显示某些内容,但条件当然会发生很大变化。

但是Ember似乎只解析了我的代码一次,这意味着一旦它成为真,无论如何它都会保持正确,所以首先它不会显示,但它会显示但是空。

这是我的代码段

{{#if controller.selectedTmHit}}
    {{tm-results-footer selectedTmHit=controller.selectedTmHit}}
{{/if}}

如何在ember中更新if条件?

**编辑

这是我的控制器

TsWebEditor.SubfileController = Ember.ObjectController.extend({
    needs:['application'],
    jobId:Ember.computed.alias("controllers.application.currentTask.jobId"),
    selectedTmHit:null
});

这是我的部分主要部分

<div id="tabTmSearch" class="tab tab-pane active">
      {{partial "subfile/tm-tab"}}
</div>

这是我的子文件/ tm-tab partial

<div class="container-fluid">
{{#if controller.selectedSegment}}
    <div class="row">
        <div class="tm-main-source">
            {{tm-hit-source locale=sourceLocale segment=controller.selectedSegment}}
        </div>
    </div>
    <hr/>
    <div class="row tm-results-table">
        <table class="table table-bordered table-condensed table-striped">
            <tbody>
            {{#each tmHit in controller.selectedSegment.tmHits}}
                {{tm-hit tmHit=tmHit}}
            {{/each}}
            </tbody>
        </table>
    </div>
{{/if}}
</div>
{{#if controller.selectedTmHit}}
    {{tm-results-footer selectedTmHit=controller.selectedTmHit}}
{{/if}}

首先它正确显示但是一旦if条件为真,它就不会被重新渲染,尽管selectedTmHit的值被改变而且它只显示一个空div

1 个答案:

答案 0 :(得分:0)

好的我发现了问题,我遇到了一个未被捕获但未出现的异常,EmberJS在所有其他内容完成后进行渲染,所以当我的代码抛出异常时它没有完成渲染过程,因为该事件已终止,无法返回运行循环以继续执行。

因此,如果你有同样的事情,请检查你的异常,并确保你回到循环并完成处理。