Angular Gantt(错误:plumb.detach不是函数)

时间:2017-09-27 09:15:34

标签: angularjs jsplumb gantt-chart

在我的应用程序中,我使用了angular-gantt组件。当我绘制新的依赖项时,我发现了这个错误

angular.js:12808 TypeError: this.manager.plumb.detach is not a function
at Dependency.model.disconnect (http://localhost:9001/bower_components/angular-gantt/assets/angular-gantt-plugins.js:2676:44)
at DependenciesManager.removeDependency (http://localhost:9001/bower_components/angular-gantt/assets/angular-gantt-plugins.js:2321:39)
at DependenciesManager.refresh (http://localhost:9001/bower_components/angular-gantt/assets/angular-gantt-plugins.js:2617:30)
at Object.refresh (http://localhost:9001/bower_components/angular-gantt/assets/angular-gantt.js:4139:35)
at GanttApi.<anonymous> (http://localhost:9001/roadmaps/gantt/roadmapgantt.js:94:24)
at http://localhost:9001/bower_components/angular-gantt/assets/angular-gantt.js:117:33
at Scope.$emit (http://localhost:9001/bower_components/angular/angular.js:16634:33)
at Object.feature.raise.(anonymous function) [as add] (http://localhost:9001/bower_components/angular-gantt/assets/angular-gantt.js:213:42)
at root.jsPlumbInstance.createConnection (http://localhost:9001/bower_components/angular-gantt/assets/angular-gantt-plugins.js:2092:57)
at root.jsPlumbInstance.fire (http://localhost:9001/bower_components/jsplumb/dist/js/jsplumb.js:2884:64)

以下是我使用的数据对象 enter image description here

当我在任务之间绘制一个依赖项时会显示错误。 这里是甘特选项

$scope.options = {
        columns: [
            'model.taskId', 
            'model.activity', 
            'model.details', 
            'model.comments'
        ],
        columnsHeaders: {
            'model.taskId': 'ID', 
            'model.activity': 'Activity', 
            'model.details': 'Detail', 
            'model.comments': 'Comments'
        },
        columnContents: {
            'model.comments': '<span class="fa fa-comment-o fa-lg" role="button" ng-click="scope.showComments(row.model.tasks)">&nbsp;{{getValue()}}</span>',
            'model.details': '<span class="underline" role="button" ng-click="scope.taskDetails(row.model.tasks)">{{getValue()}}</span>'
        },
        fromDate: moment(null),
        toDate: undefined,
        labelsEnabled: true,
        filterRow: '',
        api: function(api){
            $scope.api = api;

            api.core.on.ready($scope, function(){
                // AL RESIZE O AL MOVE, FACCIO L'UPDATE DEL TASK
                if (api.tasks.on.moveBegin) {
                    api.tasks.on.resizeEnd($scope, addEventName('tasks.on.resize', updateTaskBeginEnd));
                    api.tasks.on.moveEnd($scope, addEventName('tasks.on.move', updateTaskBeginEnd));
                }

                api.dependencies.on.add($scope, function(newData, oldData){
                    api.dependencies.refresh(newData.task);
                });

            });
        }
    };

4 个答案:

答案 0 :(得分:1)

我找到了2个解决此问题的方法:

  1. 将缺少的var object = { eventOne(){ console.log("eventOne") }, eventTwo(){ console.log("eventTwo") }, .......more events } //and then this for calling them for(event in object){ event(); } 函数添加到当前的detach()中:

    在您的照片上:

    deleteConnection()

    在您的HTML上:

    $scope.registerApi = function(api) {
        api.core.on.rendered($scope, function(api){
            api.dependencies.on.add($scope, function (dependency) {
                if(!dependency.manager.plumb.detach){
                    dependency.manager.plumb.detach = dependency.manager.plumb.deleteConnection;
                }
             });
        });
    };
    
  2. 或者,您可以使用2.4.0之前的Plumb版本,如2.3.6

我实现了第一个解决方案:)

答案 1 :(得分:0)

我也有同样的错误。不知道该怎么解决。 但它因gantt-dependencies插件的默认设置而引发。

在'js-plumb-defaults'属性中。 ConnectionOverlays:[['箭头',{位置:1,长度:12,宽度:12}]]

答案 2 :(得分:0)

我得到了同样的错误,我的模型完全不同。我不认为它与js-plumb-default有任何关系。

作为一个快速而肮脏的解决方案,对我有用。

我刚刚注释掉了这一行

this.manager.plumb.detach(this.connection);

在我的实现中,当调用plumb.disconnect时,this.connection对象中没有detatch函数。

所以这里的文档 - https://jsplumbtoolkit.com/community/doc/removing.html

用户通过鼠标在通过makeSource配置的元素上创建了Connection,该元素没有deleteEndpointsOnDetach:false set。

我认为这是angular-gantt-plugins.js库的错误。将报告回来。

答案 3 :(得分:0)

我遇到了同样的问题。以下是我修复它的方法,以防它帮助其他人 最新版本的jsPlumb(截至2018-03-22)是2.6.9但是在angular-gantt项目GIT repository package.json for the demo version个州^2.3.2所以我认为它是用于在线演示(工作正常)。

因此我将jsPlump降级为2.3.2并且不再引起任何错误 这是我正在使用的配置:

<script src="https://cdnjs.cloudflare.com/ajax/libs/jsPlumb/2.3.2/js/jsplumb.min.js"></script>

<gantt-dependencies 
            enabled="true"
            read-only="false"
            js-plumb-defaults="{
                    Endpoint: ['Dot', {radius: 7}],
                    Connector: 'Flowchart'
                }">
</gantt-dependencies>