我有一个dust.js模板文件,我向它传递两个数组:
如何选择dust.js下拉列表中的选项?
下面是一个示例:
我发送给模板的数据
var selectOptions = [1,2,3,4,5,6,7,8,9,10,11,12,13];
var selectedValues = [3,7,9];模板
<select multiple>
{#selectOptions}
<option>{.}</option>
{/selectOptions}
</select>如何使用{selectedValues}来选择这些选项?
提前谢谢你的帮助。
发布于 2013-10-28 05:58:02
另一个使dust.js模板更清晰的解决方案是将这两个列表组合成一个新的对象列表。
因此,使用前面的数据示例:
var selectOptions = [1,2,3,4,5,6,7,8,9,10,11,12,13];
var selectedValues = [3,7,9];
var options = [];
for(var i=0;i<selectOptions.length;i++){
var item = selectOptions[i];
// Option object containing selected value + selected info
var option = { value : item, selected : selectedValues.indexOf(item) > -1 };
options.push(option);
}您的dust.js模板现在将如下所示:
<select multiple>
{#options}
<option {?selected}selected="true"{/selected}>{value}</option>
{/options}
</select>发布于 2013-10-10 07:57:40
添加另一个循环以检查所选选项
<select multiple>
{#selectOptions}
<option
{#selectedValues val=.}
{@eq key="{val}" value="{.}"}selected="true"{/eq}
{/selectedValues}
>{.}</option>
{/selectOptions}
</select>请注意,我使用来自Linkedin的尘埃助手提供平等比较。
发布于 2015-08-25 15:44:54
与这个具体的问题不完全相关,但可能对某人有用。您可以创建一个全局助手,它只执行以下操作:
_.extend dust.helpers,
contains: (chunk, context, bodies, params) ->
if _.contains params.array, params.key
chunk = bodies.block(chunk, context)
chunk我使用了CoffeeScript和Underscore.js,但是很容易翻译成普通的Javascript。
用法:
// options = ["foo", "bar"]
{@contains array=options key="bar"}
Bar is an option.
{/contains}还有一个插件,更广泛,在助理员-额外中具有相同的功能。
更多关于如何创建全球帮手的信息。
https://stackoverflow.com/questions/19281838
复制相似问题