2

我已经使用 Meteor 大约 2 周了,我遇到了一个问题,我有一个动态调用的模板,我还需要插入一些反馈文本作为 HTML。这是我用来尝试实现这一点的模板和 js 代码的一部分。

Accounts.createUser({
           <<SOME OPTIONS FOR THIS METHOD >>
        }, function(error){
            var templateName;
            var messageFeedback;
            if(error){
                .... some other code

            } else {                    
                //THIS IS WHERE MY PROBLEM LIES
                messageFeedback = '<span class="helper-caps">Thanks for Signing Up</span><br />' +
                'A confirmation email has been sent to the team. You wil be notified by email when your account has been verified<br />';

                templateName = 'formSuccess';

            }

            //proceed to render the correct message.
            var formData= { formResultMessage: messageFeedback }
            var message = Meteor.render(Template[templateName](formData));

            _formElement.append(message);

            Meteor.flush();

        });
    });

这也是我正在使用的模板示例。

    <!-- Form Success -->
<template name="formSuccess">
    <div class="row">
        <div class="columns">
            <div class="alert-box">
                <p class="helper-no-marg-vert">
                    {{formResultMessage}}
                </p>
            </div>
        </div>
    </div>
</template>
<!-- Form Success -->

我有一个名为 messageFeedback 的变量,我将把它作为需要使用 Meteor 的渲染函数在模板中渲染的数据的一部分插入。

我成功地将 messageFeedback 字符串作为纯文本传递,但我想要它做的是我希望它以 HTML 呈现,以便出现适当的演示文稿。

我已经尝试过诸如此问题中概述的 3 {{{ }}} 之类的方法,如何呈现 Meteor Session 变量的 HTML?,或使用 Handlebars 的 SafeString,在把手中的助手中渲染模板但无济于事,因为它们总是以纯文本而不是 HTML 形式呈现,显示 HTML 标记。

如果有人有任何其他想法使其正确渲染,将不胜感激。

谢谢

4

1 回答 1

3

看看这个车把助手: https ://github.com/zeroasterisk/Presenteract/blob/master/client/lib/handlebar-helpers.js#L10-15

我在模板中使用它如下:

{{#with blogPost}}
<h1>{{safe 'title'}}</h1>

所以它会查看 blogPost.title,然后渲染它,HTML 和所有内容。

您可以尝试messageFeedback如下包装:

var formData= { 
  formResultMessage: new Handlebars.SafeString(messageFeedback)
}

我认为这应该工作......


但是,在第二次审查时,您可能会更好地重新考虑您的方法。

...
Session.set('createUserFeedbackTemplate', 'formSuccess');
Session.set('createUserMessage', new Handlebars.SafeString(messageFeedback));
...

在 HTML

{{#if sessionEquals 'createUserFeedbackTemplate' 'formSuccess'}}
  {{> formSuccess}}
{{/if}}
{{#if sessionEquals 'createUserFeedbackTemplate' 'formError'}}
  {{> formError}}
{{/if}}

sessionEquals可以在以下位置找到帮助程序: https ://github.com/zeroasterisk/Presenteract/blob/master/client/lib/handlebar-helpers.js#L25-33

于 2013-05-28T05:33:02.590 回答