如何更改Handlebars语法以区别于Angular模板语法?

时间:2015-07-24 03:02:59

标签: angularjs handlebars.js

我使用Handlebars为Angular应用程序进行动态模板的客户端预处理。我需要Handlebars进程渲染一些包含{{ this notation }}的Angular标记,该标记用于角度模板引擎,而不是Handlebars模板引擎。

{{This is a Handlebars expression that contains an {{Angular expression}}...}}

这里有区分Handlebars和Angular的双花括号表示法的语法吗?我不想更改Angular的语法,因为我有大量依赖于该语法的代码。我可以调整Handlebars语法吗?

2 个答案:

答案 0 :(得分:4)

Igor Raush的答案中的语法是针对Mustache的。把手不支持此功能。

Handlebars允许您在花括号之前使用和反斜杠转义单行。但出于某种原因,你不会在他们的文档中找到它。

这并没有解决问题中嵌套表达式的边缘情况,但是我可以解决问题的最接近的情况,并且可能对面临类似问题的人有用。

以下是一个例子:

<div>{{thisWillBeProcessedByHandlebars}}</div>

<div>\{{ThisWontBeProcessedByHandlebars}}</div>

答案 1 :(得分:2)

您可以更改Handlebars或Angular模板分隔符:

<强>角

首先(全球设定)

app.config(['$interpolateProvider', function($interpolateProvider) {
    $interpolateProvider.startSymbol('<%');
    $interpolateProvider.endSymbol('%>');
}]);

然后

<% This is an AngularJS expression that contains a {{ Handlebars expression }} %>

<强>车把

{{=<% %>=}}  // this kind of thing can be done as many times as needed
{{ This is an AngularJS expression that contains a <% Handlebars expression %> }}