Handlebar.js if 语句不起作用

fa.*_*fa. 0 if-statement backbone.js handlebars.js

我在列表模板中添加了一个组合框,并且 \xc4\xb1 想根据模型中的数据库渲染组合框,那么有什么问题吗?请帮助..

\n\n
<script type="text/x-handlebars-template" id="listItemTmpl">\n<tr>                             \n    <td>{{partNo}}</td>\n    <td>\n         <select name="selectCombo" id="selectCombo">\n                {{#each chks}}\n                <option value=\'{{myModel.id}}\' {{#if(this.id==myModel1.status)}}selected{{/if}}>{{myModel1.name}}</option>\n                {{/each}}\n            </select>\n    </td>\n</tr>\n\n</script>\n
Run Code Online (Sandbox Code Playgroud)\n\n

\xc4\xb1 有两个模型;\none 是,

\n\n
 myModel1=Backbone.Model.extend({\n    url:url,\n    defaults:{\n      name:"",\n      status:""\n  }\n });\n
Run Code Online (Sandbox Code Playgroud)\n\n

另一个是;

\n\n
myModel=Backbone.Model.extend({\n  url:url,\n  defaults:{\n\n  }\n});\n
Run Code Online (Sandbox Code Playgroud)\n

jev*_*lio 5

问题是,车把不是这样工作的。该表达式{{#if(this.id==myModel1.status)}}不是有效的车把 if 块。

Handlebars 是一个语义、声明性模板引擎。它不支持任意 JavaScript 表达式。您可以使用该块检查的唯一内容#if是某些内容是否真实(不是falseundefinednull""[]

首选方法是在渲染模板之前评估条件,并使用视图模型将结果传递给模板。isSelected在您的情况下,您可以向数组中的每个对象添加一个属性chks,然后在模板中简单地使用它来评估它

{{#if isSelected}}selected{{/if}}
Run Code Online (Sandbox Code Playgroud)

有关如何使用把手的示例,请参阅handlebars.js 文档。