0

CakePHP プロジェクトの編集ページに SlickGrid を実装しようとしています。ページが読み込まれると、javascript コンソールに次のエラーが表示されます。

slick.grid.js:2173TypeError:'Slick.Editors.Text is not a constructor' (evaluating 'new (editor || getEditor(activeRow, activeCell))')

データはページのグリッドに正しく表示されますが、セルをクリックして編集すると、白くなり、何も入力できません。別のセルをクリックすると、そのセルが白くなり、最初のセルは白のままです。

これが私のphp/jQueryコードです:

<?php echo $this->Html->script("/js/slickgrid/lib/jquery-1.7.min.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/lib/jquery.event.drag-2.0.min.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/lib/jquery-ui-1.8.16.custom.min.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/slick.core.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/slick.grid.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/slick.editors.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/slick.formatters.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/slick.dataview.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/plugins/slick.cellselectionmodel.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/plugins/slick.cellrangedecorator.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/plugins/slick.cellrangeselector.js"); ?>
<?php echo $this->Html->script("/js/slickgrid/plugins/slick.rowselectionmodel.js"); ?>

<?php  // Setup rows and cols array for grid

    $columns = array();
    foreach($route['Stop'] as $stop) {
        $columns[] = array( "name"   => $stop['name'],
                            "field"  => $stop['id'],
                            "id"     => $stop['id'],
                            "editor" => "Slick.Editors.Text");
    }

    $tripId = 1;
    $thisTrip['id'] = $tripId;
    foreach($route['RouteTrip'] as $routeTrip) {
        if($routeTrip['trip_id'] != $tripId) {
            $rows[] = $thisTrip;
            $tripId = $routeTrip['trip_id'];
            $thisTrip['id'] = $tripId;
        }
        else {
            $thisTrip[$routeTrip['stop_id']] = $routeTrip['time'];
        }
    }
?>

<?php 
        echo $this->Html->scriptBlock('

            var rows = '.json_encode($rows).';
            var columns = '.json_encode($columns).';
            var options = { rowHeight:21,
                            defaultColumnWidth:100,
                            editable:true,
                            enableAddRow:true,
                            enableCellNavigation:true,
                            asyncEditorLoading:false,
                            autoHeight:true,
                            autoEdit:true
                          };

            slickgrid = new Slick.Grid($("#scheduleTable"), rows, columns, options);
            slickgrid.setSelectionModel(new Slick.CellSelectionModel());
            slickgrid.updateRowCount();
            slickgrid.render();
        ');
?>

$rows と $columns は正しくフォーマットされており、各列には値として "Slick.Editors.Text" を持つ "editor" 属性があります。

ヘルプ?

4

2 に答える 2

1

slickgrid で作業を開始したときにも、最初にこのエラーが発生しました。

エラーは、エディターをクラスではなく文字列として指定したためです。したがって、"editor" => "Slick.Editors.Text" の二重引用符を削除し、"editor" => Slick.Editors.Text として指定します。

これでエラーが解決しました。このソリューションがあなたのものも解決することを願っています。

于 2012-06-13T03:28:20.443 に答える