AngularJS - конфликт ветки с двойными фигурными скобками



Как вы знаете, как угловая, так и ветка имеет общую конструкцию управления - двойные фигурные скобки. Как я могу изменить значение по умолчанию угловой?



Я знаю, что могу сделать это в Twig, но в некоторых проектах я не могу, только JS.

569   2  

2 ответов:

вы можете изменить начальные и конечные теги интерполяции с помощью interpolateProvider сервис. Одним из удобных мест для этого является время инициализации модуля.

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

http://docs.angularjs.org/api/ng.$interpolateProvider

на этот вопрос появляется ответ, но более элегантное решение, которое не было упомянуто, - это просто заключить фигурные скобки в кавычки между фигурными скобками ветки, например:

{{ '{{myModelName}}' }}

если вы используете переменную для содержимого, сделайте это вместо:

{{ '{{' ~ yourvariable ~ '}}' }}

вы должны использовать одинарные кавычки, а не двойные кавычки. Двойные кавычки позволяют интерполировать строки по ветке, поэтому вам нужно быть более осторожным с содержимым, особенно если вы используем выражения.


если вы все еще ненавидите видеть все эти фигурные скобки, вы также можете создать простой макрос для автоматизации процесса:

{% macro curly(contents) %}
   {{ '{{' ~ contents ~ '}}' }}
{% endmacro %}

сохраните его в виде файла и импортируйте в свой шаблон. Я использую ng для имени, потому что оно короткое и сладкое.

{% import "forms.html" as ng %}

или вы можете поместить макрос в верхней части шаблона и импортировать его как _self (см. здесь):

{% import _self as ng %}

тогда используйте его как следует:

{{ ng.curly('myModelName') }}

вот результаты:

{{myModelName}}

...и последующие меры для тех, кто использует MtHaml вместе с прутиком. MtHaml позволяет использовать AngularJS curlies обычным образом, потому что любой код ветки доступен, хотя - и = вместо {{ }}. Например:

обычный HTML + AngularJS:

<tr ng-repeat="product in products">
   <td> {{ product.name }} </td>
</tr>

MtHaml + AngularJS:

%tr(ng-repeat="product in products")
   %td {{ product.name }}

MtHaml + AngularJS с веточкой в стиле MtHaml:

- set twigVariable = "somevalue"
= twigVariable
%tr(ng-repeat="product in products")
   %td {{ product.name }}

Comments

    Ничего не найдено.