AsyncRenderable.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. <?php
  2. namespace Dcat\Admin\Traits;
  3. use Dcat\Admin\Support\LazyRenderable;
  4. trait AsyncRenderable
  5. {
  6. /**
  7. * @var LazyRenderable
  8. */
  9. protected $renderable;
  10. /**
  11. * 获取请求地址
  12. *
  13. * @return string
  14. */
  15. public function getRequestUrl()
  16. {
  17. return $this->getRenderable()->getUrl();
  18. }
  19. /**
  20. * @param LazyRenderable $renderable
  21. *
  22. * @return $this
  23. */
  24. public function setRenderable(LazyRenderable $renderable)
  25. {
  26. $this->renderable = $renderable;
  27. return $this;
  28. }
  29. /**
  30. * @return LazyRenderable
  31. */
  32. public function getRenderable()
  33. {
  34. return $this->renderable;
  35. }
  36. /**
  37. * @return string
  38. */
  39. protected function getRenderableScript()
  40. {
  41. if (! $this->getRenderable()) {
  42. return;
  43. }
  44. return <<<JS
  45. function render(callback) {
  46. $.ajax('{$this->getRequestUrl()}').then(function (data) {
  47. _loading = 0;
  48. callback(
  49. Dcat.assets.executeScripts(data, function () {
  50. Dcat.triggerReady();
  51. }).render()
  52. );
  53. })
  54. }
  55. JS;
  56. }
  57. }