2014-09-14 6 views
1

Когда вы используете {{}}, тонкий смотрит на первый { и считает его атрибутом.slim with angular - Conflict with {{double curly braces}}

Как отключить { как ключевой символ из тонкого. так что использование {{ }} будет интерпретироваться как угловой, а не тонкий атрибут?

(PS Я использую slim-rails драгоценный камень, поэтому решение может быть специфичным к рельсам, но кто знает?)

+1

Вы можете использовать нг-привязку или https://docs.angularjs.org/api/ng/service/$interpolate – Whisher

+0

Хотя действительное решение, которое, вероятно, будет крайне утомительным и раздражающий код/​​чтение/обслуживание. Я уже могу использовать '|' или '' 'перед' {{}} ', как это предусмотрено slim, разглаживая его как необработанный текст, который интерпретируется как угловой – ahnbizcad

+1

Я не знаю о slim, но вы можете изменить маркеры интерполяции ('{{', '}}') в Angular. Например. вместо '{{...}}' use '[[...]]' или '(-: ... :-)' или что угодно :) – gkalpak

ответ

6

Вот что я без изменения настроек:

p 
    | {{ user.name }} 
    = a_method_call 

или

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

, знаете ли вы как изменить настройки? = D – ahnbizcad

+0

Кроме того, с вашего пути, как вы обрабатываете контент, у которого после него есть больше вещей, а не текстовый текст? , например. 'p | {{user.name}} a_method_call' – ahnbizcad

+0

, отредактированный для вызова метода, действительно ли вы хотите изменить конфигурацию углов? – apneadiving

1

Если вы хотите изменить интерполяционные маркеры в угловом, вы можете использовать соответствующие методы $interpolateProvider внутри конфигурации блока:

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

Тогда Угловое не распознает старые маркеры ({{, }}).
Вы будете использовать самые новые:

<span>[[someValue]]</span> 
+0

К сожалению, slim обнаруживает все три '{}' '[]' и '()', так что бы ни один альтернативный угловой символ, начинающийся с любого из этих трех символов, по-прежнему имел одинаковую проблему? Вам нужно будет использовать другого персонажа? – ahnbizcad

+0

@gwho: Вы можете использовать любую последовательность символов (и любую длину), которая вам подходит. Я не знаком с тонким, поэтому я не могу сделать хорошее предложение. – gkalpak

4

Вы можете изменить параметры по умолчанию, стройный, чтобы не использовать {}. Поместите его в папку инициализаторов:

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

Иногда действительно неудобно отделять текст от новой строки с помощью кучи (|) и получать синтаксис рельсов. Это действительно лучший способ пойти. –