首页 > 解决方案 > 如何更新 Ember 模板中辅助主体内的变量

问题描述

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

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

但是,当仅在帮助程序(例如#if#each)内引用该数字时,该数字不再更新。这只会显示初始值:

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

(请注意,这myNumber与 无关model。只是使用一些随机的真实属性。)

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

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

标签: ember.jspropertieshandlebars.jscomputed-propertiescomputed-observable

解决方案


使用箭头函数将解决您的问题。

alt


推荐阅读