将参数传递给手把辅助对象
Pass in parameter to handlebars helper
所以我有一个非常简单的车把助手-
Handlebars.registerHelper('selectRow', (rowIndex, selectedIds) ->
console.log 'row index'
console.log rowIndex
console.log selectedIds
isSelected = _.indexOf(rowIndex, selectedIds)
if isSelected > -1
return 'class="row-selected"'
)
我有这个车把代码-
<div class="title">{{ title }}</div>
<hr/>
<table cellspacing="0" cellpadding="0">
<thead>
{{#each columns}}
<th class="col-heading" data-heading="{{ this }}">{{ this }}</th>
{{/each}}
</thead>
<tbody>
{{#each rows}}
<tr {{#selectRow @index selected }}>
{{#each this}}
<td>
{{this}}
</td>
{{/each}}
</tr>
{{/selectRow}}
{{/each}}
</tbody>
</table>
所选参数总是未定义的。如果我在其他地方添加一个{{selected}},它会显示一个数组,正如你从下面看到的,它应该是-
data = @model.data()
selected = @model.get('selection').get('selected')
@$el.html(@tableContentsTemplate({
columns: @model.get('columns')
rows: data
title : @model.get('title')
selected: JSON.stringify(selected)
}))
如何将所选参数正确传递给助手?
您在Handlebars each
循环中使用selected
变量,所以我认为selected
不在作用域中。
我想您只是对_.indexOf
的工作方式有点困惑。来自精细手册:
_.indexOf(array, value, [isSorted])
的索引返回可在数组中找到值的索引,如果阵列不存在值,则返回-1。
因此,您要搜索的数组selectedIds
应该是第一个参数,而要搜索的元素是第二个参数。也许你的意思是说:
isSelected = _.indexOf(selectedIds, rowIndex)
或更好(IMO):
isSelected = _(selectedIds).indexOf(rowIndex)
我通常发现使用_()
函数会产生更清晰的代码。
另外,{{#selectRow @index selected }}
不应该是{{selectRow @index selected}}
吗?一个前导#
应该引入一个块,但您的辅助对象并不是作为块辅助对象编写的。
一旦上述两个问题都得到解决,对我来说,明智的事情似乎正在发生:http://jsfiddle.net/ambiguous/pkVZc/1/
相关文章:
- 如何将javascript对象作为参数传递到c#web服务中
- 将对象作为参数传递时的 Javascript 函数作用域
- 将对象作为参数传递后的未定义属性
- 什么时候需要在javascript中的函数中将对象作为参数传递
- 如何使用没有闪耀模板的角度流星将参数传递给辅助对象
- 如何将对象参数传递给事件处理程序
- 如何在ng重复中的ng单击中将对象作为参数传递?AngularJS
- 将对象作为参数传递给指令
- JS 函数将对象作为输入,并返回一个对象,该对象对作为参数传递的对象执行操作
- 处理在 JavaScript 中作为参数传递的空对象
- 通过将参数传递给我们的构造函数来创建唯一的对象
- 在 javascript 中通过引用传递一个对象参数
- 使用 Function.prototype.bind.apply(Obj, args) 将参数传递给对象,只传递第一个元
- 作为参数传递到函数中的对象的引用是否会更改
- 如何使用 javascript 访问在函数中传递的对象参数
- jQuery - 基于作为函数参数传递的对象构建动态 if 语句
- 停止对作为函数参数传递到新列表的对象引用
- 我正在寻找一种智能方法来检查传递给函数的对象参数
- Javascript 将对象作为函数参数传递
- 在对象上调用方法或将对象作为函数参数传递的差异