我正在使用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({});
}
});
甚至是一种方法?
有人有想法吗?非常感谢 !
答案 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,但我希望你能得到这个想法。