ajax配合art-template模板引擎的使用

CR7Ronaldo發表於2020-07-15

最近才接觸js的模板引擎聽說相比以前使用的js foreach載入後臺返回的json資料簡便很多而且效率方面也很不錯。今天自己玩了一下

後臺使用的是.net mvc,資料庫指令碼就不提供了,返回的JsonResult,將資料存放在data中,前臺通過ajax配合模板引擎進行一個呼叫然後以表格的形式顯示資料。

前臺html程式碼:

<a href="#" onclick="GetData()">獲取資料</a>
    <table class="table">
        <tr>
            <td>姓名</td>
            <td>年齡</td>
            <td>說明</td>
        </tr>
        <tbody id="tb">
            
        </tbody>
    </table>

js程式碼:當然首先你得先匯入art-template.js 下載地址:http://aui.github.io/art-template/

重點來說說這裡:

首先第一步:載入art-template.js的檔案

第二步:定義模板引擎並在裡面進行資料的載入吧(個人理解),在網上也找了一下資料,說script type的值不能是text/script,不然會造成無法解析。也就是說除開text/script應該都可以,這裡我用的是text/template(原諒我不去度娘)。

第三步:就是處理請求回來的資料怎麼顯示了,先來看看ajax請求成功後我直接將data存放在template作為第二個引數,第一個引數對應定義模板引擎的id通過最後var去接收。完了以後就是在模板引擎中進行渲染,這裡通過each data,這是一種標準語法吧,就好比之前通過模板字串拼接的一個升級版,當然可能好處更多。data就是後臺返回回來的json資料,

通過{{$(value)}}的方式去拿到對應的資料,這樣看來比以前foreach迴圈然後拼接字串真的好太多,後期維護也比較好。

<script src="~/resources/art-template.js"></script>
<script type="text/template" id="tbdata">
    {{each data}}
        <tr>
            <td>{{$value.Name}}</td>
            <td>{{$value.Age}}</td>
            <td>{{$value.Desc}}</td>
        </tr>
    {{/each}}
</script>
 <script>
        function GetData() {
            $.ajax({
                type: "post",
                url: "/Test/Index",
                data: {},
                success: function (data) {
                    var result = template('tbdata', data);
                    $("#tb").html(result);
                }
            });
        }
    </script>

後臺程式碼:這裡通過ef從資料庫載入資料

public class TestController : Controller
    {
        testDBEntities db=new testDBEntities();
        // GET: Test
        [HttpPost]
        public JsonResult Index()
        {
            var datas = db.Tests.ToList();
            return Json(new { data = datas });
        }
        
    }

最後的顯示效果:

第一次玩模板引擎,希望以後會有更多的認識。

相關文章