Ractive模板if语句不考虑父if语句

时间:2015-08-10 10:57:14

标签: javascript mustache ractivejs

在我的模板中,我有一个字符串的if语句,它有时是未定义的,因为它在循环内部,并且循环中的项目被删除并在其他事件发生时添加。

下面是一个示例模板,它将在循环内部分。当从JS中的值将myString更改为undefined时,此部分会导致RactiveJS中出现未定义的错误。

{{#if myString}}
    {{#if myString.indexOf('hello people') > -1}}
        <p>Hello all the people</p>
    {{/if}}
    Why are the people?
{{/if}}

要停止错误,我必须执行以下操作:

{{#if myString}}
    {{#if myString && myString.indexOf('hello people') > -1}}
        <p>Hello all the people</p>
    {{/if}}
    Why are the people?
{{/if}}

子if语句中带有&&的模板对我来说没有多大意义,因为它应该考虑父if语句而不会导致错误。

Ractive在翻译语句时的方式是否有问题,或者对于模板语言来说是否正常?

1 个答案:

答案 0 :(得分:3)

当前版本的Ractive&#39;变平&#39;依赖于您的数据的事物图表;这样的副作用是表达式有时会在它们被删除之前立即更新,这会导致像这样的不良情况。这可能会在下一个版本(0.8)中发生变化。目前,最好的解决方法可能是您已经使用过的解决方法,但如果能够使模板更具可读性,您也可以将其封装为函数:

Cacheable
{{#if isHelloPeople(myString) }}
    <p>Hello all the people</p>
{{/if}}