2012-10-05 49 views
9

當我在同一個模板中使用AngularJS時,如何阻止Smarty拋出錯誤。我有這個代碼Smarty的頁面模板:Smarty PHP與AngularJS衝突

<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 

如果我換{{我}}{{4}}或正常工作的任何其他數字。我也可以使用數學,{{8 + 2}}將在頁面中顯示10。 Smarty是否在執行angularJS的數學計算?

回答

16

試試這個:從Smarty的網站

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

報價...

{}文字標籤允許數據塊從字面上理解。這通常用於圍繞Javascript或樣式表塊的 ,其中{curly 大括號}會干擾模板分隔符語法。 {literal} {/ literal}標籤中的任何 都不會被解釋,但會按原樣顯示 。

+3

嘿,那還有簡潔;) –

+0

當然!我是模板引擎的新手,加上是凌晨2點,但顯而易見的答案是跳過括號。謝謝一堆 –

20

更清潔的解決方案:你可以改變AngularJS正是如此的模板分隔符:

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