lekoala/silverstripe-modular-behaviour

在 SilverStripe 中使用 modular-behaviour.js

资助包维护!
lekoala

安装: 264

依赖者: 0

建议者: 0

安全: 0

星星: 0

关注者: 3

分支: 0

开放问题: 0

语言:JavaScript

类型:silverstripe-vendormodule

dev-master 2023-08-10 15:02 UTC

This package is auto-updated.

Last update: 2024-09-10 17:24:39 UTC


README

Build Status scrutinizer Code coverage

简介

允许在 Silverstripe 中使用 modular-behaviour

ModularBehaviour 是一个工具,可以帮助您将行为绑定到特定的 HTML 节点。因此,它与 entwine 的工作方式相似,但由于在前端强制使用 entwine 并非总是可行,它可以在前端和后端独立且一致地工作。

如何使用

简单地扩展 ModularFormField 而不是 FormField。如果不行,可以简单地使用 ModularBehaviour 特性。这个模块主要是针对 FormFields 构建的,但它也应该适用于小部件等。

然后可以根据需要覆盖任何内置方法

  • getModularManual
  • getModularSrc
  • getModularSelector
  • getModularFunc
  • getModularName
  • getModularConfig
  • getModularConfigName

请参阅 phpdoc 以获取详细用法。

以下是一个示例

class MyModularField extends ModularFormField {
    public function getModularName()
    {
        return 'MyApp.MyModularField';
    }

    public function getModularSelector()
    {
        return '.my-modular-field';
    }

    public function getModularConfigName()
    {
        return str_replace('-', '_', $this->ID()) . '_config';
    }

    public function getModularConfig()
    {
        $script = $this->getInitScript();
        $configName = $this->getModularConfigName();
        $script = "var $configName = $script";
        return $script;
    }
}

延迟加载

使用 modular-behaviour 包装的表单字段可以延迟加载(当用于长页面或标签页时非常有用)。

只需调用 setModularLazy 并传递 true 即可,它应该会神奇地工作。

动态源

您还可以(如果需要,延迟)加载源脚本,而不是依赖于 requirements api。

只需覆盖 getModularSrc 以返回包含构造函数的公共路径 js 文件。

ESM 注意

由于通过 globalEval 加载的 ajax 脚本不支持 esm 模块(未识别到导出),因此最小文件使用 iife 构建。

兼容性

与 ^4.10 测试过,但应该适用于任何 4.x 项目

维护者

LeKoala - thomas@lekoala.be