Meteor模板数据对象可防止javascript事件触发
Meteor template data object prevents javascript events from firing?
我在Meteor中遇到了一个非常奇怪的问题。。。
我有一个函数可以渲染一个模板并将其附加到div中,在添加的模板中有一个按钮可以触发侦听器事件。
奇怪的是,当我在没有任何数据对象作为参数的情况下渲染模板时,可以触发点击事件,但一旦我将数据对象传递到模板中,新附加的模板中的所有javascript都会停止工作。。。
理想情况下,我希望能够将数据传递到模板中,并使事件正确启动,有人知道这里到底发生了什么吗?非常感谢!
将数据传递到模板的失败场景:
client.coffee
Template.detail.events {
'click .ol_self_help_btn': (event) ->
alert 'event fired' //This is never triggered
}
Template.room.events {
'click .ol_detail': (event) ->
element = $(event.currentTarget).closest('.ol_property')
element.append Meteor.render Template.detail @ //Passing in "this" data object to the template
}
detail.html
<Template name="detail">
<div class="row ol_detail_panel">
<button style='button' class='ol_self_help_btn'>Click Me</button> //The button that the event is attached to
</div>
</div>
</Template>
没有数据对象传递的成功场景:
client.coffee
Template.detail.events {
'click .ol_self_help_btn': (event) ->
alert 'event fired' //This is triggered when clicking on the button
}
Template.room.events {
'click .ol_detail': (event) ->
element = $(event.currentTarget).closest('.ol_property')
element.append Meteor.render Template.detail //NOT Passing in data to the template function
}
detail.html
<Template name="detail">
<div class="row ol_detail_panel">
<button style='button' class='ol_self_help_btn'>Click Me</button> //The button that the event is attached to
</div>
</div>
</Template>
这应该会将当前@呈现到模板中。
Template.room.events
'click .ol_detail': (event) ->
element = $(event.currentTarget).closest('.ol_property')
template = Template.detail @
element.append Meteor.render(template)
这看起来很混乱:element.append Meteor.render Template.detail
为了调试,我会把它分解成这样的东西(对不起,我的非Coffee Script语法,我要用纯JS去老派):
var my_render = Meteor.render(Template.detail);
element.append(my_render);
然后使用大量console.log()语句来找出未匹配的发生位置。即
console.log("my_render: " + my_render);
console.log("element.append(my_render): " + element.append(my_render));
顺便说一句,你的例子没有显示房间模板,所以假设它很简单。
相关文章:
- 如何将javascript事件从web浏览器wpf控件发送到wpf的c#代码
- 在同一个javascript事件处理程序中调用不同的函数
- Javascript事件;在新选项卡中打开”;
- 存在每个时间元素的javascript事件
- Javascript事件.锚的目标问题
- 带有参数的Javascript事件处理程序
- 如何从另一个处理程序内部取消JavaScript事件处理程序函数的执行
- firefox中的Javascript事件范围问题
- Firefox中的JavaScript事件参数
- 在动态加载的PHP表单上放置JavaScript事件
- 如何在Javascript事件上从JSNI设置GWTClass字段
- Javascript事件发射器一次处理多个事件
- 在下拉式javascript事件监听器中选择时触发事件
- 在javascript中导入xlsx文件时,如何手动强制javascript事件
- 显示触发的JavaScript事件
- 正在取消IE11中的JavaScript事件
- 页面卸载期间的JavaScript事件循环
- 存在其他参数时访问Javascript事件
- 阻止Javascript事件影响子元素
- 如何在事件处理程序中获取 javascript 事件对象