如何在Meteor中重新加载(重新渲染)模板

时间:2014-10-23 20:47:13

标签: meteor meteor-blaze

我正在开发支持多种语言的聊天应用。该应用程序的基本功能正常,但更改聊天室时我遇到的问题很小。

每个房间都设置为支持2种语言。发送聊天消息时,您可以选择要将消息发送到哪种语言。通过单击标志的小图标可以在两个标志图标之间切换。这个模板是:

<template name="chatBar">
<div id="chatBar" class="input-append input-prepend">
    <form id="chatForm">
        <span class="add-on"><img src="/images/flags-iso/flat/16/{{chatMessageLang}}.png" id="lang"></span>
        <input id="chatMessageLanguage" type="hidden" value="{{chatMessageLang}}">
        <input id="chatMessageTarget" type="hidden" value="{{chatMessageTargetLang}}">
        <input class="input-xxlarge" id="chatMessage" type="text" placeholder="&larr; choose your language and then type your message here&hellip;">
        <button class="btn" id="sendNewMessage" type="submit">Send</button>
    </form>
</div>

并从另一个模板调用:

<template name="chat">
{{> chatroom}}
<div id="chatWindow">
    <ul>
        {{#each chats}}
        <li class="{{messageClass}} {{_id}}">
            <img src="/images/flags-iso/flat/16/{{langOriginal}}.png">
            {{langTo.flagicon}}
            {{user}}:
            <span class="message" lang="{{langOriginal}}">{{original}}</span>
            {{#if translated}}
            <span class="message" lang="{{langTranslated}}">{{translated}}</span>
            {{/if}}
            {{#if correction}}
            <i class="icon-remove"></i>
            <span class="friendCorrection">{{correction}}</span>
            {{/if}}
            <span class="messageOptions">{{{messageOptions}}}</span>
        </li>
        {{/each}}
    </ul>
</div>
{{> chatBar}}
</template>

我遇到的问题是当我更改聊天室时,我所在的聊天室中保留了语言选项。设置聊天栏语言的代码是:

Template.chatBar.helpers({
chatMessageLang: function() {
    //return getCurrentChatroomInfo().langFrom.iso;
    return Meteor.user().profile.langNative;
},

chatMessageTargetLang: function() {
    var chatroomLang1 = getCurrentChatroomInfo().langFrom.iso;
    var chatroomLang2 = getCurrentChatroomInfo().langTo.iso;


    if(Meteor.user().profile.langNative == chatroomLang1){
        return chatroomLang2;
    } else {
        return chatroomLang1;
    }
}});

function getCurrentChatroomInfo(){
  return Chatrooms.findOne({_id : Router.current().params['_id']})
}

如何使变量chatMessageTargetLang对加载的聊天室做出反应(每个聊天室都有自己的路由)。

由于 亚当

0 个答案:

没有答案