我正在尝试使用此代码进行基本对话:
JS:
var conversation;
Template.messagestpl.onCreated(function(){
this.subscribe('getUserDataByUsername', 'google', function(){
Tracker.afterFlush(function () {
conversation = new Conversation().save();
var user = Meteor.users.findOne({username: 'google'});
conversation.addParticipant(user);
conversation.sendMessage("Hello World!1");
conversation.sendMessage("Hello World!2");
conversation.sendMessage("Hello World!3");
conversation.participants().forEach(function(participant){
console.log(participant.user().username);
});
});
});
});
Template.messagestpl.helpers({
messagesList: function(){
return conversation.messages();
}
});
火焰:
<template name="messagestpl">
messages
{{#if Template.subscriptionsReady}}
{{#each messagesList}}
{{message}}: {{message.body}}
{{/each}}
{{/if}}
</template>
我收到一条错误消息:
模板助手中的异常:TypeError:无法读取未定义的属性“消息”
我做错了什么?
答案 0 :(得分:0)
出于空间原因,我会把它放在答案中,即使它可能不完整。
我原以为问题是[HttpPost]
public async Task<ActionResult> Register(RegisterViewModel model)
{
// verify the models' valid
if (ModelState.IsValid)
{
var user = new ApplicationUser {
/* ... */,
CompanyID = model.CompanyID // entity we retrieved
};
//
// SignInManager yatta yata
//
}
return View(model); // Uh-oh fallback.
}
变量不是被动的。
您可以将conversation
设为ReactiveVar,也可以将conversation
放入会话变量中。
后:
conversation
把这个:
conversation.participants().forEach(function(participant){
console.log(participant.user().username);
});
然后更改辅助函数:
Session.set('conversation', conversation);
});
我认为不需要Template.afterFlush()。
答案 1 :(得分:0)
我认为你需要使用Sessions。所以,希望这个简短的例子可以帮助你:
Template.convers.events({
'click #addConvers': function(event, template) {
event.preventDefault();
var user = Meteor.users.findOne({username: 'google'});
var conversation = new Conversation().save();
conversation.addParticipant(user);
Session.set('converID', conversation._id);
}
});
您需要通过会话ID返回消息收集:
Template.messagestpl.helpers({
messagesList: function(){
var sGet = Session.get('converID');
return Meteor.messages.find({
conversationId:sGet});
}
});