使用jQuery的data()和Mustache.js模板

时间:2013-01-07 18:38:29

标签: javascript jquery mustache

我正在构建一个Web应用程序,我想在其中显示一个复杂的模型(名为Answer)。我使用Mustache模板格式化数据,但现在我遇到的问题是我无法将任何复杂数据附加到生成的html中,这通常可以使用jQuery的.data()方法。

我当前(不正确)的实现应该展示我想要实现的目标:

// (part of) the template
{{#answers}}
    <input type="checkbox" data-answer="{{.}}">{{text}}
{{/answers}}

// js on the page
$(document).on('change', 'input[type="checkbox"]', function (event) {
    console.log($(this).data('answer'));
})

现在我希望在控制台中引用原始的Answer-object,而不是使用相当无用的字符串“[object Object]”。当用户选中复选框时,我有办法检索原始对象吗?

修改:另请参阅http://jsfiddle.net/sebastianv89/jQBpN/

1 个答案:

答案 0 :(得分:0)

我认为问题可能是HTML data-属性用于存储文本数据,而不是实际的Javascript对象,因此使用Mustache模板尝试设置data-answer只会导致文本表示您存储的答案对象

您可以尝试的另一种方法是将答案对象缓存在地图中(作为JS对象),并使用data-answer属性将密钥存储到该地图中。