關於layer.open彈框

風靈使發表於2018-07-18
// 用於單選項的彈框,點選右上角關閉按鈕,也能重新整理原頁面
function layerForCloseToRefresh(content){
  layer.open({
    icon: 1, // 皮膚樣式
    content:content,//提示資訊
    type: 0,
    fix: false, //不固定
    scrollbar: false,//滾動條
    yes:function(){ // 點選確定按鈕
      $("#mainForm").submit();
    },

    // end 函式執行的是彈框關閉時觸發的事件 
    end:function(){ // 未點選確定按鈕,點選關閉按鈕  
      $("#mainForm").submit();
    }
  });
}

獲取layer.open彈出層的返回值

正在開發的車聯網專案用到了layer API。當我在開發“新建電子圍欄”的時候需要彈出地圖,使用者在地圖中畫一個區域,最後將這個彈出層的資料返回給原頁面。下面是我的實現過程:

觸發彈出層的程式碼:

layer.open({
                    type: 2,
                    title: "設定圍欄",
                    shadeClose: true,
                    shade: 0.4,
                    area: ['90%', '90%'],
                    content: "/ElectronicFence/Map?id=" + id + "&shapeType=" + shapeType,
                    btn: ['確定','關閉'],
                    yes: function(index){
                        //當點選‘確定’按鈕的時候,獲取彈出層返回的值
                        var res = window["layui-layer-iframe" + index].callbackdata();
                        //列印返回的值,看是否有我們想返回的值。
                        console.log(res);
                        //最後關閉彈出層
                        layer.close(index);
                    },
                    cancel: function(){
                        //右上角關閉回撥
                    }
                });

注意:

var res = window["layui-layer-iframe" + index].callbackdata();

這行程式碼中‘callbackdata’是彈出層裡面定義的函式。也許我們知道了什麼!這個函式的作用就是返回值。

彈出層中定義返回值的函式

<script type="text/javascript">
        var map = new AMap.Map("container", {
            resizeEnable: true
        });
        //在地圖中新增MouseTool外掛
        var mouseTool = new AMap.MouseTool(map);
        AMap.event.addDomListener(document.getElementById('point'), 'click', function () {
            mouseTool.marker({ offset: new AMap.Pixel(-14, -11) });
        }, false);
        AMap.event.addDomListener(document.getElementById('line'), 'click', function () {
            mouseTool.polyline();
        }, false);
        AMap.event.addDomListener(document.getElementById('polygon'), 'click', function () {
            mouseTool.polygon();
        }, false);


        var callbackdata = function () {
            var data = {
                username: 'zhangfj'
            };
            return data;
        }
    </script>

上面的程式碼就是彈出層裡面的JavaScript程式碼,裡面定義了函式’callbackdata’ 用來返回值給呼叫彈出層的頁面。

當我們點選彈出層的“確定”按鈕的時候,就可以通過’callbackdata‘函式獲取彈出層的返回值:

F12 檢視console.log(res);的輸出結果:

這裡寫圖片描述

相關文章