Javascript 尝试在meteor中创建回复评论功能

Javascript 尝试在meteor中创建回复评论功能,javascript,meteor,Javascript,Meteor,我正在尝试做一个回复评论选项,目前我有一个带有文本区域的输入字段,提交时会在屏幕上打印姓名和评论。现在,我已经创建了第二个输入和文本区域,我希望稍后也将其打印到屏幕上,理想情况下,只要点击屏幕上的名称和注释旁边的回复按钮,输入和文本区域就会弹出。但目前我只想在第二个输入和文本区域开始工作,以便在屏幕上打印任何内容。我基本上复制了前面的代码,只是更改了变量和函数名,在它们后面添加了一个1。现在它不起作用了,它在我在主体中添加{{>message1}}的地方中断了。页面上甚至没有显示任何内容。这里是

我正在尝试做一个回复评论选项,目前我有一个带有文本区域的输入字段,提交时会在屏幕上打印姓名和评论。现在,我已经创建了第二个输入和文本区域,我希望稍后也将其打印到屏幕上,理想情况下,只要点击屏幕上的名称和注释旁边的回复按钮,输入和文本区域就会弹出。但目前我只想在第二个输入和文本区域开始工作,以便在屏幕上打印任何内容。我基本上复制了前面的代码,只是更改了变量和函数名,在它们后面添加了一个1。现在它不起作用了,它在我在主体中添加
{{>message1}}
的地方中断了。页面上甚至没有显示任何内容。这里是一个链接到现场

这是我正在使用的代码

HTML

<head>
  <title>tutorial</title>
</head>

<body>
 {{> messages}}
 {{> entry}}
 {{> entry1}}
</body>

<template name="messages">
    {{#each messages}}
        <!--echo of message template-->
        {{> message}}
    {{/each}}
</template>

<template name="message">
    <p><strong>{{name}}:</strong>{{message}}</p>
</template>

<template name="entry">
    <p><input type="text" id="name" placeholder="your name"></p>
    <p><textarea type="text" id="messageBox" placeholder="your message"></textarea></p>
    <p><input type="button" id="submit" value="submit"></p>
</template>

<template name="messages1">
    {{#each messages1}}
        <!--echo of message template-->
        {{> message1}}
        <a href="#">reply</a>
    {{/each}}

</template>

<template name="message1">
    <p><strong>{{name}}:</strong>{{message1}}</p>
</template>

<template name="entry1">
    <p><input type="text" id="name1" placeholder="your name"></p>
    <p><textarea type="text" id="messageBox1" placeholder="your message"></textarea></p>
    <input type="button" id="submit1" value="submit">
    </p>
</template>

您应该包括
{{messages1}}
,而不是
{{message1}}
, 您应该将事件作为
entry1
上的函数调用,而不是
entry

Template.entry1.events({'click #submit1' : function() {
    var nameEntry1 = document.getElementById('name1');
    if(nameEntry1.value != ""){
      var ts = Date.now() / 1000;
      Messages1.insert({name: nameEntry1.value, message1: $('#messageBox1').val(), time: ts});
    }
  }
});
如果您将“messages1”重命名为“comments”,将“message1”重命名为“comment”,将“entry1”重命名为“enterComment”等等,则会更加清晰

<body>
 {{> messages}}
 {{> entry}}
 {{> enterComment}}
 {{> comments}}
</body>

{{>消息}
{{>条目}
{{>enterComment}
{{>注释}
然后JS变成:Template.enterComment.events({…})


添加{{>message1}时,您的web控制台中是否存在JS错误?如果是这样的话,你能把它们放在你的模版信息中吗?我想你是说,
{{messages1}}
而不是
{{message1}}
@Akshat我的意思是说messages1我添加了上面的控制台错误。您没有使用名为
messages1的集合
使用
messages1=new Meteor.collection('messages1')将其添加到顶部
@Akshat修复了控制台错误,但是名称和消息仍然没有打印到页面上。非常感谢您的帮助。
<body>
 {{> messages}}
 {{> entry}}
 {{> enterComment}}
 {{> comments}}
</body>