dttnb997315 2016-10-30 15:53
浏览 9
已采纳

SilverStripe对每个AJAX调用使用requirements()

I'm using a JS script for UI purposes in the CMS area by using a decorator for LeftAndMain.

class LeftAndMainTweaks extends LeftAndMainExtension {
  public function init() {

    parent::init();

    // My JS script
    Requirements::javascript('mymodule/js/myscript.js');
  }
}

The script is loaded only once and not again for each AJAX call (like browsing through pages or ModelAdmin's) which breaks some of the JS functionalities.

How do you force the an external JS script to be reloaded after each AJAX call?

  • 写回答

1条回答 默认 最新

  • douyanqu9722 2016-11-01 13:11
    关注

    You should not have to force reloading of scripts. Use entwine hooks instead.

    A common pattern is to use onmatch and onunmatch, eg.

    $('.my-selector').entwine({
        onmatch: function () {
            // don't forget to call this._super();
            this._super();
    
            // Do your stuff to initialize your component
        },
    
        onunmatch: function () {
            this._super();
            // clean up your component, unbind event listeners etc.
        }
    });
    

    If a view creates a node with the .my-selector class, the onmatch will be called and you can initialize your component there.

    Since you didn't specify what exactly you're trying to achieve, it's hard to give better guidance. I think this is also a pretty good read, if you're new to entwine: https://www.bigfork.co.uk/takeaway/a-beginners-introduction-to-using-entwine-in-silverstripe

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题
  • ¥15 如何用Python爬取各高校教师公开的教育和工作经历
  • ¥15 TLE9879QXA40 电机驱动