【问题标题】:Ampersand conversion with Haml with Angular.js application使用带有 Angular.js 应用程序的 Haml 进行 & 符号转换
【发布时间】:2014-09-08 18:46:42
【问题描述】:

我有一个 Angular.js 应用程序,我想开始使用 Haml。我的问题是我的一些代码没有正确转换。

我需要输出以下内容:

<form name='userForm' class='admin-form form-horizontal' ng-submit='userForm.$valid && saveUser()' novalidate></form>

所以在 Haml 中,我写道:

%form{:class => 'admin-form form-horizontal', :name => 'userForm', :'ng-submit'=>'userForm.$valid && saveUser()'}

但问题是 &amp;amp;&amp;amp; 被转换为 &amp;amp;&amp;amp; 所以:

<form name='userForm' class='admin-form form-horizontal' ng-submit='userForm.$valid &amp;&amp; saveUser()' novalidate></form>

我能做些什么来防止这种情况发生?此外,是否可以将 Haml 中标签的每个属性放在单独的行上?当我尝试这样做时也会出错。

【问题讨论】:

    标签: angularjs haml html-encode html-escape-characters


    【解决方案1】:

    您需要将escape_attrs option 设置为false。你如何做到这一点将取决于你如何使用 Haml,see the docs

    例如从命令行:

    $haml --no-escape-attrs
    %form{:class => 'admin-form form-horizontal', :name => 'userForm', :'ng-submit'=>'userForm.$valid && saveUser()'}
    

    产生:

    <form class='admin-form form-horizontal' name='userForm' ng-submit='userForm.$valid && saveUser()'></form>
    

    【讨论】:

    • 我使用 Haml 作为 Grunt 任务。我在我的 .haml 文件中添加了“$haml --no-escape-attrs”行,但它仍然不起作用。
    • 不,这是从命令行键入内容的示例,而不是添加到 .haml 文件中的内容。您需要了解如何使用 Grunt 设置 Haml 选项,然后将 :escape_attrs 设置为 false。
    【解决方案2】:

    好的,我通过在 Gruntfile haml 选项中将 no-escape-attrs 设置为 true 让它工作:

    haml:
          options:
            'no-escape-attrs': true
    

    【讨论】:

      猜你喜欢
      • 2015-07-20
      • 1970-01-01
      • 2015-04-09
      • 2015-11-18
      • 2018-05-25
      • 2013-11-29
      • 1970-01-01
      • 1970-01-01
      • 2014-08-28
      相关资源
      最近更新 更多