当我在同一模板中使用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的数学吗?
答案 0 :(得分:20)
更清洁的解决方案:您可以通过以下方式更改AngularJS的模板分隔符:
angular.module('app', [])
.config(['$interpolateProvider', function ($interpolateProvider) {
$interpolateProvider.startSymbol('[[');
$interpolateProvider.endSymbol(']]');
}]);
答案 1 :(得分:16)
试试这个:
<li ng-repeat="i in items">
<p class="item">{literal}{{i}}{/literal}</p>
</li>
来自Smarty网站的报道......
{literal}标签允许从字面上获取数据块。这是 通常用于Javascript或样式表块,其中{curly 大括号}会干扰模板分隔符语法。什么 在{literal} {/ literal}标签内不会被解释,而是显示 原样。
答案 2 :(得分:4)
您可以将Angular配置为使用{{}}以外的插值符号:https://stackoverflow.com/a/11108407/215945