如何更新Ember模板中的帮助器体内的变量

时间:2018-09-30 22:32:33

标签: ember.js properties handlebars.js computed-properties computed-observable

想象一下,控制器中的属性myNumber每秒具有不同的随机数。使用此模板,您将每秒看到此更改:

<h4>Random number</h4>
<p>{{myNumber}}</p>

但是,当仅在助手中引用该数字时(例如#if#each),该数字不再更新。这将仅显示初始值:

<h4>Random number</h4>
{{#if model}}
    <p>{{myNumber}}</p>
{{/if}}

(请注意,myNumbermodel无关。仅使用一些随机的真实属性。)

有趣的是,当您将对属性的引用添加回文档的根目录时,以前的静态数字现在也会更新:

<h4>Random number</h4>
{{myNumber}} -- Without this reference, references below won't update.
{{#if model}}
    <p>{{myNumber}}</p>
{{/if}}

如何在助手内部更新myNumber,而又不显示模板根目录中的数字?

我尝试在html注释中添加引用,但这不起作用。我认为Ember不会绘制不在DOM中的元素:

<h4>Random number</h4>
<!-- {{myNumber}} -->
{{#if model}}
    <p>{{myNumber}}</p>
{{/if}}

有效的方法是将值添加到DOM,但将其隐藏。但是,这是一个丑陋的解决方案:

<h4>Random number</h4>
<span style="display:none">
    {{myNumber}}
</span>
{{#if model}}
    <p>{{myNumber}}</p>
{{/if}}

1 个答案:

答案 0 :(得分:0)

使用箭头功能可以解决您的问题。

alt