我在我的应用程序中使用胡子时遇到了问题。我窃取了'can.....mustache‘,我有一个模型对象,它的结构如下:
// widgets
Models.LayoutWidget = can.Model({
findAll: 'GET /pages/{id}/layouts/widgets'
}, {});然后,使用fixture helper,它可以正确地获取以下内容:
var LAYOUT_WIDGETS = [
{
id: 1,
name: 'Menu',
config: {
width: 4,
height: 1
}
}
];这就是模板:
<script id="layout-widget-template" type="text/mustache">
<li class="layout-widget" {{data 'widget'}}>
<span class="layout-widget-delete">×</span>
<span class="layout-widget-name">{{name}}</span>
</li>
</script>这是我用来获取模板的代码:
var template = can.trim(can.view.render('#layout-widget-template', widget));
// or
var template = can.trim(can.view('#layout-widget-template', widget));
// or same without trim它只是给了我
<li class="layout-widget" data-view-id='2'>
<span class="layout-widget-delete">×</span>
<span class="layout-widget-name"><span data-view-id='3'>@@!!@@</span></span>
</li> 什么the.....are那些"@@!!@@“?它也没有正确绑定数据,因为如果我尝试
can.data(el, 'widget'); // gives undefined!!我在我的页面上有其他模板,可以正确地处理这些小部件项目。快把我逼疯了!我已经在我的模板中尝试了{{self.name}},{{this.name}}!有帮助吗?提前使用Tnx!
发布于 2013-05-07 01:35:01
您看到的符号是活动绑定的占位符,一旦您将呈现的文档片段添加到DOM中,这些符号就会消失。
我建议始终使用can.view,因为它返回文档片段,而不是返回字符串的can.view.render (这可能也是data helper无法工作的原因,因为数据只能附加到DOM元素)。文档片段已经是一种DOM结构,所以没有理由通过can.trim运行它(实际上,它会将其转换回字符串并修剪该字符串,这很可能不是您所需要的)。
下面是一个fiddle示例,它还将小部件数据记录到控制台:http://jsfiddle.net/3gD2p/
// widgets
var LayoutWidget = can.Model({}, {});
var widget = LayoutWidget.model({
id: 1,
name: 'Menu',
config: {
width: 4,
height: 1
}
});
$('#dummy').html(can.view('layout-widget-template', widget));
console.log($('.layout-widget').data('widget'));https://stackoverflow.com/questions/16387578
复制相似问题