访问传递给Handler.js模板的上下文(或根对象)

时间:2014-07-29 14:55:48

标签: javascript handlebars.js

我有一个像这样的模板

把手模板

<script id="choose-player-template" type="text/x-handlebars-template">
      <label>Entity Name:</label>
      <input type="text" value="{{entityName}}"></input>
      <ul>
      {{#players }}
        <li><input type="checkbox" {{#if isSelected}}checked{{/if}}/>
            {{name}}
        </li>
      {{/players}}
      </ul>
      <input type="button" onclick="saveSelection()" value="Save Selection" style="width:150px;"></input>
</script>

的Javascript

<script type="text/javascript">
    var playersList = {players: [], entityName: "Name1"}; //I pass this to the handlebar template
</script

假设我将对象 playersList 传递给模板。我应该使用什么语法来引用Handlebars模板中的该对象。简而言之,如何访问传递给Handlebar模板的根对象。

修改: 实际上我对上面的问题听起来很混乱,所以这个编辑。实际上,该模板正在运行并正确显示 ul li 列表中的玩家列表。那部分没问题。有一个对象&#34; playersList 会传递给模板,并且此对象中的所有玩家都会正确显示。但是,我正在通过复选框更改每个玩家的状态。现在,用户完成更改后,他会点击输入按钮,如模板代码的最后一行所示。这将调用 saveSelection() javascript函数(上面的代码中未显示)。我不想将模板中的 this 对象传递给此函数。

1 个答案:

答案 0 :(得分:0)

当您传入该对象时,您的上下文已经设置为基础。当您在循环内部时,无论如何都不知道访问基础对象。如果无法按照自己的方式获取,可能需要创建一个Helper函数来处理一些处理。

看起来你想迭代你的球员名单。 如果{{#each players}} {{this}} {{/each}},您可以players = ['joe', 'bob', 'jim']