Smarty PHP与AngularJS发生冲突

Pet*_*ete 9 javascript php template-engine smarty angularjs

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

 <li ng-repeat="i in items">
      <p class="item">{{i}}</p>
 </li>
Run Code Online (Sandbox Code Playgroud)

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

 PHP Fatal error: Uncaught exception 'SmartyCompilerException' with message 'Syntax Error in template ... <p>{{i}}</p>; unknown tag "i
Run Code Online (Sandbox Code Playgroud)

如果我将{{i}}替换为{{4}}或任何其他数字,则可以正常工作.我也可以使用数学,{{8 + 2}}将在页面中显示10.这是Smarty做angularJS的数学吗?

小智 20

更清洁的解决方案:您可以通过以下方式更改AngularJS的模板分隔符:

angular.module('app', [])
  .config(['$interpolateProvider', function ($interpolateProvider) {
    $interpolateProvider.startSymbol('[[');
    $interpolateProvider.endSymbol(']]');
  }]);
Run Code Online (Sandbox Code Playgroud)


Dev*_*ger 17

试试这个:

<li ng-repeat="i in items">
    <p class="item">{literal}{{i}}{/literal}</p>
</li>
Run Code Online (Sandbox Code Playgroud)

从Smarty网站引用...

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

  • 嘿,那里有简洁;) (3认同)