JsRender if-else什么都没有渲染

时间:2014-01-15 01:31:31

标签: javascript templates jsrender

我有一个简单的模型:

var model =  [{
    content: "",
    type: "photo",
    src: "xxx"
}, {
    content: "",
    type: "quote",
    text: "blah"
}];

和一个简单的模板:

{{if type eq='photo'}}
    <img src="{{:src}}" />
    <div class="photo-caption">
        {{:caption}}
    </div>
{{else type eq='quote'}}
    <div class="quote-text">
        {{:text}}
    </div>
{{/if}}

问题是,当type为“quote”时,模板根本不呈现任何内容。如果我将其稍微更改为两个if而不是if-else,则会呈现引号,但也会呈现div class="photo-caption">。我需要它只渲染一个或另一个。我觉得这是一个简单的语法问题,但似乎找不到足够的文档来说明如何在JsRender网站上正确完成。

Here's a fiddle。两个模板 应该完全相同。相反,一个渲染两者,另一个渲染图像。

2 个答案:

答案 0 :(得分:4)

我明白了:

{{if type == 'quote' }}
    <div>
        {{: text }}
    </div>     
{{else type == 'photo'}}   
    <div> 
        {{: src }} 
     </div>   
{{/if}}

http://jsfiddle.net/4QzZX/2/

答案 1 :(得分:-2)

当您尝试使用两个if语句的版本时,除了将{{/if}}更改为{{else}}之外,您还记得添加{{if}}吗?

{{if type eq='photo'}}
    <img src="{{:src}}" />
    <div class="photo-caption">
        {{:caption}}
    </div>
{{/if}}
{{if type eq='quote'}}
    <div class="quote-text">
        {{:text}}
    </div>
{{/if}}