2012-10-20 72 views
3

我使用Kendo UI所見即所得的編輯器將格式化的文本輸入到使用PHP的MySQL數據庫中。這一點工作正常。我在我的數據庫中編碼了HTML。在Kendo UI中顯示編碼的HTML

我正在使用Kendo UI ListView從數據庫輸出數據。我想通了,我需要使用2個函數來獲取正確的HTML編碼回:

$row["body"] = stripslashes(html_entity_decode($row["body"])); 
$row["body"] = str_replace(" ", " ", $row["body"]); 

現在JSON提要輸出正確的HTML(據我可以用最少的測試看)。

Javascript需要從JSON提要獲取數據並將其顯示在ListView的頁面上,現在顯示HTML代碼,而不是編碼的HTML代碼,這很好,但我真正喜歡的是爲它顯示實際的格式文本。

我試過第二次解析通過html_entity_decode()的字符串,沒有運氣。我認爲這是必須用JS完成的事情,但我不確定Kendo UI可以如何實現這一點,因爲它正在完成所有的解析。

我的JS:

$(document).ready(function() { 
    var dataSource = new kendo.data.DataSource({ 
       transport: { 
        read: { 
         url: "http://dev.openbill.co.uk/admin/crud/viewticket/main.json.php?id=<?php echo $_GET['id']; ?>", 
         contentType: "application/json; charset=utf-8", 
         type: "GET", 
         dataType: "json", 
        } 
       }, 
       schema: { 
        data: "data", 
        total: "total", 
        parse: decode 
       }, 
       serverPaging: true, 
       serverSorting: true, 
       pageSize: 10, 
       page: 1, 
      }); 

    $("#pager").kendoPager({ 
     dataSource: dataSource 
    }); 

    $("#listView").kendoListView({ 
     dataSource: dataSource, 
     template: kendo.template($("#template").html()) 
    }); 
}); 

回答

4

好的解決了這個問題!

對於任何人誰喜歡我花的時間太長了谷歌搜索...

在你的模板,替換:

${body} 

隨着..

#= body # 

,它會顯示格式化HTML

+0

救了我!在Google的第二次點擊中找到了這一點。乾杯! –

+1

同樣的故事,但與劍道網格。 一些疑難雜症 - 劍道網格列有一個屬性編碼:false/true,這也將指定是否要讓網格自動編碼該項目。這不適用於模板,因此您需要從模板中控制編碼。 還有另一個問題 - 你也可以使用#:#而不是#=#這也將編碼模板字段。似乎只有#=#不會對它們進行編碼。 –

4

正在尋找相同的東西,並使用#:

有了這個職位,我發現了劍道網站上的答案:

模板語法

劍道UI模板使用我們所說的簡單的模板語法「哈希模板」。使用該語法,「#」(或散列)符號用於標記模板中應該用模板執行時替換爲數據的區域。

有三種方法使用散列語法:

  1. 渲染文字值:#=#
  2. 渲染HTML編碼的值:#:#
  3. 執行任意的JavaScript代碼:如果#( ...){#...#}#