You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular集成Dragula拖拽时遇“source model not defined”错误的问询

解决Angular Dragula扩展模型后出现的“Dragula source model not defined”错误

嘿,我之前在Angular里用Dragula扩展模型的时候也踩过类似的坑,这个“Dragula source model not defined”错误大概率是模型绑定的路径或者初始化出了问题,给你几个具体的排查和解决方向:

  • 检查Dragula模型绑定的路径是否正确
    扩展结构后,你新增了headerfields数组,要确保负责拖拽到这个区域的Dragula bag,在模板里的dragulaModel绑定指向了正确的数组。比如原来绑定section.fields的地方,如果现在要拖拽到header区域,得改成[(dragulaModel)]="section.headerfields",同时要确认对应的bag名称和配置匹配。

  • 确认bag初始化配置中的模型指向
    在组件里创建Dragula分组(bag)的时候,要为新的headerfields拖拽场景正确设置model选项。比如:

    // 为headerfields创建专属的bag
    this.dragulaService.createGroup('headerFieldsBag', {
      removeOnSpill: false,
      // 确保模型指向每个section的headerfields数组
      model: this.data.sections.map(section => section.headerfields)
    });
    

    如果是在模板中用指令绑定,也要保证每个可接收拖拽的区域都关联了正确的bag名和模型数组。

  • 确保新数组的初始化完整性
    这个错误很常见的原因是某个section的headerfields没有被初始化为空数组,而是undefined。比如在添加新section的时候,一定要明确初始化:

    // 正确的初始化方式
    this.data.sections.push({ fields: [], headerfields: [] });
    

    不要漏掉headerfields的初始化,否则Dragula无法找到对应的源模型。

  • 排查模板中的指令绑定冲突
    如果模板里同时存在fields和headerfields两个拖拽区域,要确保它们的dragula指令分别关联到正确的bag,比如:

    <!-- 原有的fields拖拽区域 -->
    <div [dragula]="'fieldsBag'" [(dragulaModel)]="section.fields">
      <!-- 字段内容 -->
    </div>
    <!-- 新增的headerfields拖拽区域 -->
    <div [dragula]="'headerFieldsBag'" [(dragulaModel)]="section.headerfields">
      <!-- 头部字段内容 -->
    </div>
    

    另外如果需要跨bag拖拽,还要在bag配置里通过accepts函数设置允许的源和目标关系。

  • 动态更新数据后重新初始化Dragula
    如果是在运行时修改了数据结构,可能需要先销毁旧的Dragula实例,再重新创建新的配置。比如在数据更新后执行:

    // 销毁旧的bag(如果需要)
    this.dragulaService.destroy('fieldsBag');
    // 重新创建包含新模型的bag
    this.dragulaService.createGroup('fieldsBag', {
      model: this.data.sections.map(section => section.fields)
    });
    this.dragulaService.createGroup('headerFieldsBag', {
      model: this.data.sections.map(section => section.headerfields)
    });
    

内容的提问来源于stack exchange,提问作者Michael H.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:49:34