【问题标题】:slim with angular - Conflict using {{double curly braces}}有角度的苗条 - 使用{{双花括号}}的冲突
【发布时间】:2014-09-14 18:26:50
【问题描述】:

当你使用{{}} 时,slim 会查看第一个{ 并认为它是一个属性。

如何禁用 { 作为 slim 中的关键字符。这样使用{{ }} 将被解释为有角度的,而不是苗条的属性?

(附注:我使用的是slim-rails gem,所以解决方案可能是特定于 Rails 的,但谁知道呢?)

【问题讨论】:

  • 虽然是一个有效的解决方案,但编码/读取/维护可能会非常乏味和烦人。我已经可以在 slim 提供的{{}} 前面使用|',将其解析为原始文本,将其解释为角度
  • 我不知道 slim,但您可以在 Angular 中更改插值标记({{}})。例如。而不是{{ ... }} 使用[[ ... ]](-: ... :-) 或其他:)
  • 我需要通过设置更改它的角度,还是您的意思是我可以使用这些语法?
  • 在这个问题stackoverflow.com/questions/13671701/… 中,接受的答案显示了如何改变角度考虑{{}}

标签: ruby-on-rails angularjs slim-lang


【解决方案1】:

这是我在不更改设置的情况下所做的:

p
  | {{ user.name }}
  = a_method_call

p ng-bind="user.name" = a_method_call

【讨论】:

  • 您知道如何更改设置吗? =D
  • 另外,按照您的方式,您如何处理后面有更多非逐字文本的内容?例如p | {{user.name}} a_method_call
  • 为方法调用而编辑,你真的觉得改变 Angular 的配置值得吗?
  • 我宁愿改变 slim 的配置,因为 slim 有多种语法:{}[]()。告诉 slim 停止识别 {} 将使 angular 保持原样,为您提供另外两个 slim 选项。我在这里找到了如何调整角度设置stackoverflow.com/questions/13671701/…
  • 好的,看这里:github.com/slim-template/slim#available-options,即使我觉得不值得:)
【解决方案2】:

您可以将 slim 的默认选项更改为不使用 { }。将其放入初始化程序文件夹:

Slim::Engine.set_options attr_list_delims: {'(' => ')', '[' => ']'}, code_attr_delims: {'(' => ')', '[' => ']'}

【讨论】:

  • 有时不得不用堆 (|) 将文本分隔到新行并让 rails 语法正常工作真的很不方便。这确实是最好的方法。
【解决方案3】:

如果您想更改 Angular 中的插值标记,可以在配置块中使用 $interpolateProvider 的相应方法:

angular.
    module('myApp', []).
    config(function ($interpolateProvider) {
        $interpolateProvider.startSymbol('[[');
        $interpolateProvider.endSymbol(']]');
    });

那么 Angular 将无法识别旧标记({{}})。
您将使用新的:

<span>[[someValue]]</span>

【讨论】:

  • 不幸的是,slim 检测到所有三个{} [](),那么以这三个字符中的任何一个字符开头的任何替代角符号都不会有同样的问题吗?您需要使用不同的字符吗?
  • @gwho:您可以使用任何适合您的字符序列(以及任何长度)。我对slim不熟悉,所以我不能提出好的建议。
猜你喜欢
  • 2012-11-20
  • 2013-07-26
  • 2015-01-10
  • 1970-01-01
  • 1970-01-01
  • 2018-10-13
  • 2011-01-12
  • 2012-06-05
相关资源
最近更新 更多