e-frank/yii2-dragula

为 dragula 拖放库提供的 asset-bundle 和 widget

安装数量: 2,443

依赖: 0

建议者: 0

安全: 0

星标: 0

关注者: 1

分支: 2

公开问题: 1

类型:yii2-extension

dev-master 2019-11-13 14:34 UTC

This package is auto-updated.

Last update: 2024-09-14 02:28:00 UTC


README

用于 dragula 拖放库的 yii2 扩展/小部件

不需要除 dragula 之外的其他库。

有关详细文档和示例,请参阅 Dragula 示例页面

配置选项

  1. 'containers':包含 HTML 容器 ID 的字符串数组,或者包含选择器 JavaScript 代码的 JsExpression
  2. 'options':dragula 配置选项数组,请参阅 Dragula 示例页面Dragula 在 gihub
  3. 事件
  4. 'drag':JsExpression JavaScript 函数 function (el) { ... }
  5. 'drop':JsExpression JavaScript 函数 function (el) { ... }
  6. 'over':JsExpression JavaScript 函数 function (el, container) { ... }
  7. 'out':JsExpression JavaScript 函数 function (el, container) { ... }

示例/用法

####1. 拖放项的 HTML 容器

<ul id="files">
    <li data-filename="file 1">file 1</li>
    <li data-filename="file 2">file 2</li>
    <li data-filename="file 3">file 3</li>
</ul>

####2. 调用小部件

<?= \x1\dragula\Dragula::widget([
    'containers' => ['#files'],
    'options'    => [
        'revertOnSpill' => true,
    ],
    'drop' => new \yii\web\JsExpression('my.dropped'),
]); ?>

####3. 处理拖放事件的 JavaScript

<script>
    var my = {};

    my.dropped = function(el, container) {
        var c      = $(container);
        var items  = c.find('li[data-filename]');
        var result = [];
        $.each(c.find('li[data-filename]'), function(key, item) {
            result.push($(item).data('filename'));
        });

        console.log('result', result);
        // your logic here, e.g. ajax post
    }
</script>

注意,我在示例代码中使用了 jQuery,这是可选的,并且本项目未引用。

此外,您需要自行注意脚本加载顺序!