【问题标题】:Creating a macro in haml that changes the children or parent element在haml中创建一个宏来改变子元素或父元素
【发布时间】:2015-05-25 17:41:11
【问题描述】:

我经常使用以下haml模式:

%p.wording{:'data-wording-key' => 'some.key'}
  = Wording.fetch('some.key')

我想知道我是否可以创建一个帮助程序或宏来编写它

%p{wording: 'some.key'}

让它生成与第一个版本相同的 HTML。

haml 可以吗?


另一种可接受的方法是拥有

%p
  = WordingMacro('some.key')

并让WordingMacro 在父p 标签上添加类和数据属性。但这可行吗?


另一种很好的方法是声明我自己的元素,例如

%p_with_wording('some.key')

并让它生成相同的 html。但是你可以在 haml 中创建自己的元素,将参数传递给它们,然后更改它们的子元素吗?

【问题讨论】:

  • 我认为您的第一个代码块中有错字——:'data-wording-key': 开头的一个额外冒号?
  • @matt 是的,已更正,谢谢

标签: macros haml


【解决方案1】:

据我所知,haml 中没有宏,但您可以轻松地以任何与 haml 一起使用的语言创建辅助方法。

另一个可能更适合这种情况的选项是使用部分。把你常用的代码放在部分:

%p.wording{:'data-wording-key': key}
  = Wording.fetch(key)

然后在你的主haml文件中调用它:

= partial( :wording_partial, { key: 'one-key' } )

如果您使用的是 sinatra。在 Rails 中会是这样的:

= render_partial :wording_partial, locals: { key: 'one-key' }

部分渲染是使用您使用 haml 的语言完成的 - 它不是 haml 本身的一部分。

【讨论】:

    猜你喜欢
    • 2016-12-03
    • 1970-01-01
    • 1970-01-01
    • 2021-11-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多