首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在车把上有更好的方法吗?

在车把上有更好的方法吗?
EN

Stack Overflow用户
提问于 2022-07-01 17:01:33
回答 1查看 79关注 0票数 0

我用把手把一些静态的页面用这样的部分说出来:

代码语言:javascript
复制
{{> component/card size="small" title="Card Title" }}

现在,根据所需卡的“大小”,我需要设置一些不同的顺风类。我现在是这样做的,但是一定有更好的方法吗?将类添加到容器并编写css不是一个选项。

代码语言:javascript
复制
{{setVariable "additionalHeadingClass" "text-5 md:text-6 mb-4"}}
{{#ifEquals size "small"}}
    {{setVariable "additionalHeadingClass" "text-4 mb-1"}}
{{/ifEquals}}
{{#ifEquals size "large"}}
    {{setVariable "additionalHeadingClass" "text-4 sm:text-5 md:text-8 mb-4"}}
{{/ifEquals}}
<h3 class="text-primary font-bold {{@root.additionalHeadingClass}}">{{title}}</h3>

下面是帮助者im,用:

代码语言:javascript
复制
Handlebars.registerHelper("setVariable", function (varName, varValue, options) {
    if (!options.data.root) {
        options.data.root = {};
    }
    options.data.root[varName] = varValue;
});
EN

回答 1

Stack Overflow用户

发布于 2022-07-02 05:07:56

我的观点是,您的模板中有太多的代码用于实际操作。尽管行数之多令人生畏,但我们实际上只想将size映射到类名字符串。我还建议不要使用setVariable,因为当我们通过操纵上下文对象上的变量创建副作用时,我发现很难考虑。我更喜欢功能风格更强的助手,我们只需给它size,它就会返回类名字符串。

我将使用一个简单的switch创建这样一个助手

代码语言:javascript
复制
Handlebars.registerHelper('additionalClasses', function(size) {
  switch (size) {
    case 'large':
      return 'text-4 sm:text-5 md:text-8 mb-4';
    case 'small':
      return 'text-4 mb-1';
    default:
      return 'text-5 md:text-6 mb-4';
  }
});

然后,我们可以将模板简化为简单得多的模板:

代码语言:javascript
复制
<h3 class="text-primary font-bold {{additionalClasses size}}">{{title}}</h3>

我创建了一个小提琴以供参考。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72832536

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档