在Meteor Blaze上准备好订阅时的加载功能?

时间:2017-06-29 08:37:56

标签: javascript templates meteor meteor-blaze

我正在使用Meteor并为我的项目开火,我想在Meteor模板中调用JavaScript函数。更准确地说,我当然使用了发布者订阅者但是当我订阅以便从mongo DB中检索信息时,我想要触发一个函数。

事实上,我检索数据但它处理行数据,如" true"或"假"我想调用一个根据数据结果影响不同属性的函数。

例如,如果我的数据库的元素设置为" true",当订阅准备就绪时(或者一旦我的页面被加载),它将替换" true&# 34;带有绿色矩形。

为此,我想知道我们是否可以使用

Template.devicesConfiguration.onCreated(function(){
var self = this;
self.autorun(function(){
    self.subscribe('Buttons');

    //call a javascript function that uses the result of the db

    });
});

Template.devicesConfiguration.helpers({
    buttons:()=>{   

        //call a javascript function that uses the result of the db

        return ButtonsCollection.find({}); 

    }

});

甚至是一种方法?

有人有想法吗?非常感谢 !

2 个答案:

答案 0 :(得分:0)

我会使用订阅,然后是简单的帮助函数:

$newsletterForm = $this->formFactory->create(NewsletterType::class, $userToEdit);
$newsletterForm->handleRequest($request);

if ($this->newsletterFormHandler->handle($newsletterForm)) {
    $this->session->getFlashBag()->add('notice', 'flash_message.newsletter_changed');

   return $response;
}

我只是订阅模板创建的数据。

然后我注册一个public function handle(FormInterface $form): bool { if (!$form->isSubmitted() || !$form->isValid()) { return false; } $this->userManager->update($form->getData()); return true; } 帮助器,它从集合中返回数据,但在返回之前对数据执行转换(map函数)。

然后,您可以在模板中使用{{ form_start(NewsletterForm) }} {{ form_row(NewsletterForm.subscribingNewsletter, { attr: {class: 'js-newsletter-toggle'} }) }} {{ form_end(NewsletterForm) }} 循环显示数据并显示每个按钮。

答案 1 :(得分:0)

Template.devicesConfiguration.helpers({
    buttons() {
        return ButtonsCollection.find({}).map(button => {
            if(button.value === true) button.className = 'green';
            else button.className = 'red'; 
        })
    }
});

在模板中的内容如下:

{{#each button in buttons}}
    <button class={button.className}>{button.name}</button>
{{/each}}

在一段时间内没有写过任何Blaze,但我希望你能得到这个想法。