Layui 手冊

icon-圖標

1:√
2:×
3:問號
4:鎖
5:哭臉
6:笑臉
7:感嘆號

使用layer.msg('提示',{icon:1});  目前只有7種圖標可選,用的適當還是很好看的。 

表格刷新

parent.layui.table.reload('表格的ID', { page: { curr: 1 } });

這種是彈出層頁面刷新父窗體表格數據的慣用手法,但我把這種重載寫成一個方法,父頁面還是可以正常調用。如果在子窗體調用父窗體的這個方法則會出錯。方法和layui.use在同一個script標籤下,方法會失效,只能寫在另一個script標籤裏面。

在IE瀏覽器中進行數據添加後,數據未能正確重載。這是因爲IE瀏覽器在執行請求時,如果url請求參數一致,會默認調用緩存,這樣你的數據依舊是初次加載的數據。

解決措施:在表格重載的條件中加一個時間參數,讓它認爲這是一個新請求就行了,就不會調用緩存。

where: { time:new Date()}

數據查詢

在對錶格進行查詢等操作時,如果表格使用的是自動渲染,同時頁面中有文本框查詢,下拉框查詢,這樣進行查詢時。如果你上一次使用了下拉框中的條件做了查詢,當你再使用文本框進行查詢時,下拉框的參數還是會攜帶上一次的值,導致查詢結果異常。使用方法級渲染可避免此類問題,二者重載的方式存在差異。當然,有時候爲了更方便的自定義表頭,使用了自動渲染且條件參數相對較少,你可以考慮進行查詢時給其他參數賦空值。

定位當前頁

場景:在操作表格中,對第二頁數據進行了修改操作,當你重載表格時,頁碼會自動跳到第一頁,如何修改完成後,就停留在當前頁呢?

$(".layui-laypage-btn")[0].click(); 

這是模擬分頁的那個確定按鈕,我遇到這個問題,在Layui社區搜到的答案。具體請見

https://fly.layui.com/jie/13973/

文件上傳獲取文件名

在官方的文檔選擇文件的回調中有這麼一串代碼,只是我並沒有理解,所以不知道怎麼獲取,後來才知曉file參數所代表的含義。

,choose: function(obj){

//將每次選擇的文件追加到文件隊列

var files = obj.pushFile();

//預讀本地文件,如果是多文件,則會遍歷。(不支持ie8/9)

obj.preview(function(index, file, result){

console.log(index); //得到文件索引

console.log(file); //得到文件對象  這裏已經說了得到了文件對象,那就可以直接file.name直接獲取文件名

console.log(result); //得到文件base64編碼,比如圖片

//obj.resetFile(index, file, '123.jpg'); //重命名文件名,layui 2.3.0 開始新增
View Code

表格顯示圖片

有時候爲了豐富表格內容,會對一些內容進行特別的樣式編排,比如對某項內容使用a標籤跳轉,使用表單元素如checkbox來展示狀態,這些都可以用templet模版來實現。那如何顯示圖片呢,下面就來說說實現方式,官方文檔給出了三種templet語法方式,這裏所使用的的是函數轉義的方式。

templet:function (d) { return '<div><img src='+d.PrizeImg+'></div>' }

官方栗子:

table.render({
  cols: [[
    {field:'title', title: '文章標題', width: 200
      ,templet: function(d){
        return 'ID:'+ d.id +',標題:<span style="color: #c00;">'+ d.title +'</span>'
      }
    }
    ,{field:'id', title:'ID', width:100}
  ]]
}); 
View Code

但存在缺點,對於圖片的大小控制很難操控,可能是因爲表格的單元格樣式,我很想顯示成一個略縮圖的樣子,但是沒有實現,只是大致設了大小,顯示一塊內容內容,看起來是真的醜。😄

表單元素渲染問題

我想實現一個複選框反選的功能,語法沒問題,但最後就是沒效果,後來才知道運用它的表單元素,得重新渲染才行。  form.render(); //更新全部

此外,如果表單用了樣式,複選框的點擊事件會失效,原因可能是上了一個皮膚,可能已經不認識它了,你如果不想用既定的樣式,可以在元素樣式中加上lay-ignore,這樣就是原生的了。

日期插件

當一個頁面想調用兩個日期插件時,網上大佬已經給了答案,經測試可以使用。

同時,trigger: 'click'  也是解決時間插件閃屏的方法。

<script>
    function useLayDateMultiple(cls) {
        layui.use('laydate', function () {
            var laydate = layui.laydate;
            lay('#' + cls).each(function () {
                laydate.render({
                    elem: this,
                    type: 'datetime',
                    trigger: 'click'
                });
            });
        });
    }
    useLayDateMultiple('第一個元素ID');
    useLayDateMultiple('第二個元素ID');
</script>
View Code
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章