在我的if块中,JQuery tmpl没有按预期工作

时间:2011-01-28 20:35:36

标签: json knockout.js jquery-templates

我正在尝试使用{{if}}块内的JQuery.tmpl()来查询字符串值,但由于某种原因它无法正常工作。

我正在使用KnockoutJS渲染具有许多不同类型面板的仪表板。每个面板都有一个Type属性,告诉我它是哪种类型的面板。所以,这是一个(非常简单的)我的数据可能的概念:

var data = {"Panels": [
  {"Type": "A", ... },
  {"Type": "B", ... },
  {"Type": "C", ... },
]};

这是一个模板,它会根据Type

呈现不同的div标签
<script id="template" type="text/x-jquery-tmpl">
   {{if Type == "A"}}
     <div>A</div>

   {{else Type == "B"}}
     <div>B</div>

   {{else Type == "C"}}
     <div>C</div>

   {{else}}
     <div>'${Type}' is invalid!</div>

   {{/if}}
</script>

但是,我始终得到如下输出:

<div>'A' is invalid!</div>
<div>'B' is invalid!</div>
<div>'C' is invalid!</div>

如何使用Type块检查字符串属性(即{{if ..}})?

提前致谢!

1 个答案:

答案 0 :(得分:0)

以下是JSFiddle中示例的工作副本:
http://jsfiddle.net/rniemeyer/cnzeg/

我的样本与您的尝试有什么不同吗?

只有在IE中可能导致问题的其他因素是Panels数组上的尾随逗号:

var data = {"Panels": [
  {"Type": "A", ... },
  {"Type": "B", ... },
  {"Type": "C", ... }*,*
]};

不会导致您看到的问题,并且可能不在您的实际代码中。