Javascript 如何基于Meteor中助手的数据应用动态样式?
我似乎经常遇到这个问题……我有一个web UI元素,它需要根据一些底层数据进行不同的样式设置。整个UI元素的数据通过以下帮助器填充:Javascript 如何基于Meteor中助手的数据应用动态样式?,javascript,css,meteor,meteor-blaze,spacebars,Javascript,Css,Meteor,Meteor Blaze,Spacebars,我似乎经常遇到这个问题……我有一个web UI元素,它需要根据一些底层数据进行不同的样式设置。整个UI元素的数据通过以下帮助器填充: Template.foo.helpers({ info: function() { return Session.get('data'); } }); { invoicePaid: true, invoiceAmount: 100 status: 'complete' } 数据结构如下所示: Templa
Template.foo.helpers({
info: function() {
return Session.get('data');
}
});
{
invoicePaid: true,
invoiceAmount: 100
status: 'complete'
}
数据结构如下所示:
Template.foo.helpers({
info: function() {
return Session.get('data');
}
});
{
invoicePaid: true,
invoiceAmount: 100
status: 'complete'
}
如果我想对这些数据进行样式化,我一直在这样做:
Template.foo.helpers({
info: function() {
var result = Session.get('data');
if (result.invoicePaid) {
result.invoicePaidStyle = 'primary';
} else if {
result.invoicePaidStyle = 'danger';
}
etc.....
return result;
}
});
显然,在模板上,我在类列表中有
{{invoicePaidStyle}
。不过这感觉有点笨拙……有没有更好的方法来装饰Meteor中助手返回到模板的数据?将模板视为视图,助手视为控制器。然后只需在模板本身中进行装饰:
<template name="foo">
<div class="{{#if info.invoicePaid}}primary{{else}}danger{{/if}}">
blah blah
</div>
</template>
废话
将模板视为视图,将助手视为控制器。然后只需在模板本身中进行装饰:
<template name="foo">
<div class="{{#if info.invoicePaid}}primary{{else}}danger{{/if}}">
blah blah
</div>
</template>
废话
您可以尝试这样的方法
Template.foo.helpers({
info: function() {
return Session.get('data');
},
invoicePaidStyle: function (invoicePaid) {
return invoicePaid ? 'primary' : 'danger';
}
});
然后在HTML中,执行如下操作
{{invoicePaidStyle info.invoicePaid}}
我没有测试过这个,但我通常会做类似的事情。你可以试试这样的东西
Template.foo.helpers({
info: function() {
return Session.get('data');
},
invoicePaidStyle: function (invoicePaid) {
return invoicePaid ? 'primary' : 'danger';
}
});
然后在HTML中,执行如下操作
{{invoicePaidStyle info.invoicePaid}}
我还没有测试过这个,但我通常会做类似的事情。我喜欢那种风格,谢谢!有没有可能在
#if
中包装开头标签,或者在meteor中爆炸?当然,你也可以这样做。我发现这可能会更复杂,因为在整个div中,你必须有一个else,而且通常内容都是重复的。我应该补充一点,如果不在包装中包含匹配的标签,你就不能包装开始或结束标签。我喜欢这种风格,谢谢!有没有可能在#if
中包装开头标签,或者在meteor中爆炸?当然,你也可以这样做。我发现这可能会更复杂,因为在整个div中必须有一个else,并且通常内容是重复的。我应该补充一点,如果不在包装中包含匹配的标签,就不能包装开始或结束标签。