Просмотр исходного кода

表格异步模态窗以及异步列展开功能支持执行JS #412

jqh 5 лет назад
Родитель
Сommit
9c327455a4

+ 6 - 5
resources/assets/dcat/js/Dcat.js

@@ -82,16 +82,17 @@ export default class Dcat {
             if (! pjaxResponded) {
                 return $(callback);
             }
+
             return _this.onPjaxLoaded(callback);
         }
 
-        function proxy(e) {
-            _window.$(_this.config.pjax_container_selector).one('pjax:loaded', proxy);
+        function run(e) {
+            _window.$(_this.config.pjax_container_selector).one('pjax:loaded', run);
 
             callback(e);
         }
 
-        _window.Dcat.ready(proxy);
+        _window.Dcat.ready(run);
     }
 
     /**
@@ -112,8 +113,8 @@ export default class Dcat {
      *
      * @returns {Dcat}
      */
-    pjaxResponded() {
-        pjaxResponded = true;
+    pjaxResponded(value) {
+        pjaxResponded = value !== false;
 
         return this
     }

+ 2 - 2
resources/assets/dcat/js/extensions/AssetsLoader.js

@@ -10,7 +10,7 @@ export default class AssetsLoader {
             loadScripts: _this.load.bind(_this),
 
             // 从给定的内容中过滤"<script>"标签内容,并自动加载其中的js脚本
-            filterScriptsAndLoad: _this.filterScriptsAndLoad.bind(_this)
+            executeScripts: _this.executeScripts.bind(_this)
         };
     }
 
@@ -58,7 +58,7 @@ export default class AssetsLoader {
     }
     
     // 返回过滤 <script src> 标签后的内容,并在加载完 script 脚本后触发 "pjax:script" 事件
-    filterScriptsAndLoad(content, callback) {
+    executeScripts(content, callback) {
         var obj = this.filterScripts(content);
 
         this.load(obj.js, function () {

+ 1 - 1
resources/assets/dcat/js/extensions/DialogForm.js

@@ -140,7 +140,7 @@ export default class DialogForm {
             options = _this.options;
 
         // 加载js代码
-        template = Dcat.assets.filterScriptsAndLoad(template).render();
+        template = Dcat.assets.executeScripts(template).render();
         
         let btns = [options.lang.submit],
             dialogOpts = {

Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/adminlte/adminlte.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/extra/action.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/extra/resource-selector.js.map


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/js/dcat-app.js


Разница между файлами не показана из-за своего большого размера
+ 0 - 0
resources/dist/dcat/js/dcat-app.js.map


+ 1 - 1
src/Admin.php

@@ -36,7 +36,7 @@ class Admin
      *
      * @var string
      */
-    const VERSION = '1.6.7';
+    const VERSION = '1.6.8';
 
     /**
      * @var array

+ 1 - 0
src/Controllers/RenderableController.php

@@ -29,6 +29,7 @@ class RenderableController
     protected function render($renderable)
     {
         return Helper::render($renderable->render())
+            .Admin::html()
             .Admin::asset()->scriptToHtml()
             .Admin::asset()->styleToHtml();
     }

+ 5 - 1
src/Grid/Displayers/Expand.php

@@ -109,7 +109,11 @@ $('.grid-expand').off('click').on('click', function () {
             $('.dcat-loading').css({position: 'inherit', 'padding-top': '70px'});
         
             $.ajax(url+'&key='+rowKey).then(function (data) {
-                collapse.html(data);
+                var html = Dcat.assets.executeScripts(data, function () {
+                    Dcat.triggerReady();
+                }).render();
+            
+                collapse.html(html);
             });
         }
 

+ 5 - 1
src/Grid/Displayers/Modal.php

@@ -35,7 +35,11 @@ class Modal extends AbstractDisplayer
         modal.find('.modal-body').loading();
         
         $.ajax('{$url}').then(function (data) {
-            modal.find('.modal-body').html(data);
+            var html = Dcat.assets.executeScripts(data, function () {
+                Dcat.triggerReady();
+            }).render();
+            
+            modal.find('.modal-body').html(html);
         });
     })
 })();

Некоторые файлы не были показаны из-за большого количества измененных файлов