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

时间:2016-10-30 15:53:35

标签: php silverstripe

我通过使用LeftAndMain的装饰器在CMS区域中使用JS脚本进行用户界面。

class LeftAndMainTweaks extends LeftAndMainExtension {
  public function init() {

    parent::init();

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

脚本仅加载一次,而不是每次加载AJAX(如浏览页面或模型管理员),这会打破一些JS功能。

如何在每次调用AJAX后强制重新加载外部JS脚本?

1 个答案:

答案 0 :(得分:1)

您不必强制重新加载脚本。请改用缠绕钩。

常见的模式是使用onmatchonunmatch,例如

$('.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.
    }
});

如果视图创建的节点包含.my-selector类,则会调用onmatch,您可以在那里初始化组件。

由于您没有详细说明您想要实现的目标,因此很难提供更好的指导。我认为这也是一个很好的阅读,如果你是新手缠绕:https://www.bigfork.co.uk/takeaway/a-beginners-introduction-to-using-entwine-in-silverstripe