Templates 访问调用帮助程序的模板实例的DOM表示形式
我试图访问与调用帮助函数的特定模板实例相对应的DOM元素。当我阅读Meteor文档时,Template.instance应该返回调用帮助程序的模板实例对象,类似Template.instance.$的内容将允许我获取该实例中的DOM元素 但是,以下代码和类似变体不适用于我: *HTML* 当我做以下事情时:Templates 访问调用帮助程序的模板实例的DOM表示形式,templates,meteor,Templates,Meteor,我试图访问与调用帮助函数的特定模板实例相对应的DOM元素。当我阅读Meteor文档时,Template.instance应该返回调用帮助程序的模板实例对象,类似Template.instance.$的内容将允许我获取该实例中的DOM元素 但是,以下代码和类似变体不适用于我: *HTML* 当我做以下事情时: if (some Session logic) { console.log(Template.instance()) } 我让助手正确记录多个版本的: Blaze.Template
if (some Session logic) {
console.log(Template.instance())
}
我让助手正确记录多个版本的:
Blaze.TemplateInstance{view:Blaze.view,数据:7,
第一个节点:div.small-12.medium-12.large-6.columns.empty.active-container,
lastNode:div.small-12.medium-12.large-6.columns.empty.active-container,$:function…}
对于数据:值适当地从1到12,但在其他方面似乎是相同的
我如何才能使用模板方法,如template.$或template.find
编辑:
虽然不是一个完美的解决方案,但我确实通过使用Template.currentData并在输入的每个实例上设置标识符来解决了其中的一些问题
Template.create_form.helpers(
# Create 12 input containers
inputContainer: () ->
[0..11]
然后:
Template.input_container.helpers(
isActive: () ->
# Get which template instance we are working with, will return the number 0-11 that was used to create it
current = Template.currentData()
# Now I can do $(".input-container").eq(current) to grab the correct DOM element
但是需要使用这么多jQuery似乎有点脏。我不确定我是否正确地解释了这个问题,但是如果您试图访问页面上的另一个DOM元素,我可以使用jQuery选择器 例如,给定
<input type="textfield" id="initials" value=" ">
你是说Template.instance.$'.empty'.length>0吗?在javascript中,空数组不被认为是伪值。对不起,我输入错了。我想检查的是类似Template.instance.$'div'.hasClass'empty'
Template.input_container.helpers(
isActive: () ->
# Get which template instance we are working with, will return the number 0-11 that was used to create it
current = Template.currentData()
# Now I can do $(".input-container").eq(current) to grab the correct DOM element
<input type="textfield" id="initials" value=" ">
<template name="demo">
<input type="button" div id="s0">
</template>
Template.demo.events({
'click .cell': function(event, template) {
if ($('#initials').val().trim().length > 0) {
console.log($('#initials').val().trim() + ' - you clicked button '+$(event.target).attr('id'));
}
},