9

当我在同一个模板中使用 AngularJS 时,如何阻止 Smarty 抛出错误。我有一个包含以下代码的 Smarty 页面模板:

 <li ng-repeat="i in items">
      <p class="item">{{i}}</p>
 </li>

当我在浏览器中查看时,我得到一个空白页面。我的 apache error_log 中出现一个大错误,其中包含以下内容:

 PHP Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template ... <p>{{i}}</p>; unknown tag "i

如果我将{{i}}换成{ {4}}或任何其他数字,它就可以正常工作。我也可以使用数学,{{8+2}} 将在页面中显示 10。那是 Smarty 在做 angularJS 的数学运算吗?

4

3 回答 3

20

更清洁的解决方案:您可以这样更改 AngularJS 的模板分隔符:

angular.module('app', [])
  .config(['$interpolateProvider', function ($interpolateProvider) {
    $interpolateProvider.startSymbol('[[');
    $interpolateProvider.endSymbol(']]');
  }]);
于 2013-09-06T16:24:34.440 回答
17

试试这个:

<li ng-repeat="i in items">
    <p class="item">{literal}{{i}}{/literal}</p>
</li>

引用Smarty网站...

{literal} 标签允许按字面意思获取数据块。这通常用于 Javascript 或样式表块,其中 {花括号} 会干扰模板分隔符语法。{literal}{/literal} 标记中的任何内容都不会被解释,而是按原样显示。

于 2012-10-05T01:10:01.417 回答
4

您可以将 Angular 配置为使用 {{}} 以外的插值符号:https ://stackoverflow.com/a/11108407/215945

于 2012-10-05T22:08:47.340 回答