Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何基于Meteor中助手的数据应用动态样式?_Javascript_Css_Meteor_Meteor Blaze_Spacebars - Fatal编程技术网

Javascript 如何基于Meteor中助手的数据应用动态样式?

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

我似乎经常遇到这个问题……我有一个web UI元素,它需要根据一些底层数据进行不同的样式设置。整个UI元素的数据通过以下帮助器填充:

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,并且通常内容是重复的。我应该补充一点,如果不在包装中包含匹配的标签,就不能包装开始或结束标签。