AngularJS-Conflicto de ramita con llaves dobles


Como sabes, tanto angular como ramita tienen una construcción de control común: llaves dobles rizadas. ¿Cómo puedo cambiar el valor predeterminado de Angular?

Sé que puedo hacerlo en Twig, pero en algunos proyectos no puedo, solo en JS.

Author: kangax, 0000-00-00

2 answers

Puede cambiar las etiquetas de interpolación de inicio y fin utilizando el servicio interpolateProvider. Un lugar conveniente para esto es en el momento de inicialización del módulo.

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

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

 280
Author: abhaga,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-10-09 11:56:11

Esta pregunta parece respondida, pero una solución más elegante que no se ha mencionado es simplemente encerrar las llaves rizadas entre comillas entre las llaves rizadas de ramita, así: {[12]]}

{{ '{{myModelName}}' }}

Si está utilizando una variable para el contenido, haga esto en su lugar:

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

Debe usar comillas simples, no comillas dobles. Las comillas dobles permiten la interpolación de cadenas por Ramita, por lo que debe tener más cuidado con el contenido, especialmente si está utilizando expresiones.


Si todavía odias ver todas esas llaves, también puedes crear una macro simple para automatizar el proceso:

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

Guárdelo como un archivo e impórtelo en su plantilla. Estoy usando ng para el nombre porque es corto y dulce.

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

O puede poner la macro en la parte superior de su plantilla e importarla como _self (ver aquí):

{% import _self as ng %}

Entonces úsalo como sigue:

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

Esto salidas:

{{myModelName}}

...y un seguimiento para aquellos que usan MtHaml junto a Twig. MtHaml habilita el uso de AngularJS curlies de la manera normal porque se accede a cualquier código Twig - and = en lugar de {{ }}. Por ejemplo:

HTML simple + 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 con Ramita de estilo MtHaml:

- set twigVariable = "somevalue"
= twigVariable
%tr(ng-repeat="product in products")
   %td {{ product.name }}
 88
Author: robert.corlett,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-02 08:08:25